我有一个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)
Run Code Online (Sandbox Code Playgroud)
libs
作为一个独立的项目编译好并生成.lib
文件.但在这种情况下,我想以某种方式包括libs.pro
到project
一个子目录,虽然app.pro
的TEMPLATE
不是subdirs
,但app
.也许这就是为什么我尝试写东西喜欢SUBDIRS += askelib
到app.pro
没有效果.总而言之,我的目标是获取.lib
build文件夹中的文件app.pro
.我强调这libs
是一个git-submodule,因为在libs
项目内部不应该改变任何东西来实现我的目标.
我知道,如果我改变也许应该努力app.pro
的TEMPLATE
来subdirs
.但这不是我真正想做的事情,因为它会使事情变得更加困难,因为项目层次结构将会达到另一个嵌套级别:
subdirs_proj/
app/
libs/
Run Code Online (Sandbox Code Playgroud)
代替
app/
libs/
Run Code Online (Sandbox Code Playgroud)
编辑: 为了理解我的理由:
我的目标是使项目树尽可能清晰.就像你从github克隆项目一样,进入它的目录并查看app.pro
顶层.一切都清晰,容易和美丽.并不像你subdirs.pro
在顶部看到一个奇怪但实际项目在app
子目录中,你也有可能将主应用程序子文件夹与库子文件夹混淆,以防它们的名称不是那么明显app
,libs
而是类似torpedo
和helios
.希望我的想法很清楚:)
您已经有了答案:将顶级项目设为子项目.
我不明白为什么你要避免这种情况以及为什么你会发现它令人困惑.恕我直言,拥有一个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)
Run Code Online (Sandbox Code Playgroud)
我发现删除文件夹级别比弄乱项目类型更清楚.如果你害怕开发人员不知道每个子文件夹是什么,也许你应该抛出一些README文件来解释什么是什么.
你也可以看一下Qt项目本身,它有很多.pro文件,而不是你有一个包含子目录的app项目.而且我认为这一点非常明确,特别是对于这样一个大项目.
归档时间: |
|
查看次数: |
691 次 |
最近记录: |