热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

Qt-project是另一个Qt项目的git-submodule

如何解决《Qt-project是另一个Qt项目的git-submodule》经验,为你挑选了1个好方法。

我有一个Qt应用程序.它有一个.pro文件TEMPLATE = app.项目的子文件夹之一是另一个Qt项目的git-submodule:一个库的集合,它有自己的.pro文件TEMPLATE = subdirs.

图形上看起来像:

project/
    app.pro (TEMPLATE = app)
    stuff/
    libs/ <-- git-submodule
        libs.pro (TEMPLATE = subdirs)
        lib1/
            lib1.pro (TEMPLATE = lib)
        lib2/
            lib2.pro (TEMPLATE = lib)

libs作为一个独立的项目编译好并生成.lib文件.但在这种情况下,我想以某种方式包括libs.proproject一个子目录,虽然app.proTEMPLATE不是subdirs,但app.也许这就是为什么我尝试写东西喜欢SUBDIRS += askelibapp.pro没有效果.总而言之,我的目标是获取.libbuild文件夹中的文件app.pro.我强调这libs是一个git-submodule,因为在libs项目内部不应该改变任何东西来实现我的目标.

我知道,如果我改变也许应该努力app.proTEMPLATEsubdirs.但这不是我真正想做的事情,因为它会使事情变得更加困难,因为项目层次结构将会达到另一个嵌套级别:

subdirs_proj/
    app/
    libs/

代替

app/
    libs/

编辑: 为了理解我的理由:

我的目标是使项目树尽可能清晰.就像你从github克隆项目一样,进入它的目录并查看app.pro顶层.一切都清晰,容易和美丽.并不像你subdirs.pro在顶部看到一个奇怪但实际项目在app子目录中,你也有可能将主应用程序子文件夹与库子文件夹混淆,以防它们的名称不是那么明显app,libs而是类似torpedohelios.希望我的想法很清楚:)



1> Benjamin T..:

您已经有了答案:将顶级项目设为子项目.

我不明白为什么你要避免这种情况以及为什么你会发现它令人困惑.恕我直言,拥有一个app拥有子目录的subdir项目比拥有子目录的项目更令人困惑.

我不认为删除文件夹级别会补偿应用程序中的子目录.pro.想想一个新的开发人员,如果他认为TEMPLATE=app他会假设你只构建一个项目,但事实并非如此.意味着你的项目不是"清晰,容易和美丽",完全违反了最不惊讶的原则.

我经常有具有以下架构的项目:

project-a/project-a.pro (subdirs)
         /cli-app/cli-app.pro (app)
         /gui-app/gui-app.pro (app)
         /core-lib/core-lib.pro (lib)
         /3rd-party/3rd-party.pro (subdirs)
         /3rd-party/somelib/somelib.pro (lib)

我发现删除文件夹级别比弄乱项目类型更清楚.如果你害怕开发人员不知道每个子文件夹是什么,也许你应该抛出一些README文件来解释什么是什么.

你也可以看一下Qt项目本身,它有很多.pro文件,而不是你有一个包含子目录的app项目.而且我认为这一点非常明确,特别是对于这样一个大项目.


推荐阅读
  • 本文详细介绍如何在 macOS 上编译 FFmpeg 3.1.1,并将其集成到 iOS 项目中,包括必要的环境配置和代码示例。 ... [详细]
  • 深入理解BIO与NIO的区别及其应用
    本文详细探讨了BIO(阻塞I/O)和NIO(非阻塞I/O)之间的主要差异,包括它们的工作原理、性能特点以及应用场景,旨在帮助开发者更好地理解和选择适合的I/O模型。 ... [详细]
  • Docker入门与实践指南
    本文介绍了Docker的基础知识,包括其作为开源应用容器引擎的特点,以及如何利用Docker将应用程序及其依赖项打包成轻量级的容器镜像。同时,还详细讲解了Docker的核心概念、安装过程及基本命令操作。 ... [详细]
  • Web App vs Native App:未来的移动应用趋势
    随着移动互联网的发展,Web App和Native App之间的竞争日益激烈。对于开发者而言,选择哪一种技术路径更为明智?本文将深入探讨两种应用模式的特点及未来趋势。 ... [详细]
  • 本文探讨了Vue项目在Internet Explorer浏览器中遇到的问题及解决方案,包括axios请求失效和页面在低版本浏览器中显示为空白的问题。 ... [详细]
  • 前言ReactNative是目前最流行的跨平台框架,并且是Facebook团队开源的项目。架构及实现技术上都有很高的研究价值,本系列就来分析一下Reac ... [详细]
  • Eclipse 中 Maven 的基础配置指南
    本文详细介绍了如何在 Eclipse 环境中配置 Maven,包括环境变量的设置、Maven 插件的安装与配置等关键步骤,旨在帮助开发者顺利搭建开发环境。 ... [详细]
  • 深入解析Apache SkyWalking CVE-2020-9483 SQL注入漏洞
    本文详细探讨了Apache SkyWalking中的SQL注入漏洞(CVE-2020-9483),特别是其影响范围、漏洞原因及修复方法。Apache SkyWalking是一款强大的应用性能管理工具,广泛应用于微服务架构中。然而,该漏洞使得未经授权的攻击者能够通过特定的GraphQL接口执行恶意SQL查询,从而获取敏感信息。 ... [详细]
  • Java面向对象编程深入解析
    本文详细探讨了Java中的关键字static、单例模式、main()方法、代码块、final关键字、抽象类与方法、模板方法设计模式、接口、内部类等内容,旨在帮助读者深入理解和掌握Java面向对象编程的核心概念。 ... [详细]
  • 解决Ant编译时出现的非法字符错误
    在进行Java项目的Ant构建过程中,有时会遇到由平台差异引发的编译错误。本文将详细探讨一种常见的错误——'error: illegal character'及其解决方案。 ... [详细]
  • 本文介绍了软件测试项目的实际操作过程,包括各角色的职责分配、项目启动、测试流程及测试人员的主要任务,旨在为从事软件测试工作的技术人员提供指导。 ... [详细]
  • 本文通过一个简单的 C++ 示例,深入分析了当使用 `vector::resize` 方法调整向量大小时,对象的构造函数和析构函数被调用的具体情况。示例代码展示了如何创建一个包含自定义类的对象的向量,并通过调整其大小来观察构造和析构的过程。 ... [详细]
  • 本文档详细介绍了2017年8月31日关于MySQL数据库备份与恢复的教学内容,包括MySQL日志功能、备份策略、备份工具及实战演练。 ... [详细]
  • 本文详细介绍了如何配置Apache Flume与Spark Streaming,实现高效的数据传输。文中提供了两种集成方案,旨在帮助用户根据具体需求选择最合适的配置方法。 ... [详细]
  • 本文介绍如何利用线段树高效地解决Luogu1471中的方差计算问题,包括区间修改和查询操作。 ... [详细]
author-avatar
尛妙苗_549
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有