在 QMake 项目文件中添加所有子目录

Posted

技术标签:

【中文标题】在 QMake 项目文件中添加所有子目录【英文标题】:Add all subdirs in a QMake project file 【发布时间】:2017-06-23 07:43:24 【问题描述】:

我正在将一个旧项目移植到 Qt,并且我有很多单元测试项目。 每个单元测试都是一个可执行文件。

现在我的 .pro 主文件如下所示:

SUBDIRS += UnitTests/Test01/Test01.pro
SUBDIRS += UnitTests/Test02/Test02.pro
SUBDIRS += UnitTests/Test03/Test03.pro
...
SUBDIRS += UnitTests/Test54/Test54.pro

有没有办法一次包含所有子目录? 我想要这样的东西:

SUBDIRS += UnitTests/*

谢谢

【问题讨论】:

添加至少项目文件描述中提到的一些循环。也许你可以试试那个部分?! doc.qt.io/qt-4.8/qmake-project-files.html 是的,但循环是针对变量中包含的所有值完成的。所以我仍然需要用所有子目录名称填充变量,这是我尽量避免的。 【参考方案1】:

您可以尝试使用 qmake 的files 函数来定位所有*.pro 文件并像这样添加它们:

SUBDIRS += $$files(UnitTests/*.pro,true)

files 需要两个参数:一个作为第一个参数的全局表达式以及是否递归到子目录。

【讨论】:

【参考方案2】:

感谢 Martin Höher,这非常有效:

// Get a list of all .pro files
UNIT_TESTS_PRO_FILES = $$files($$PROJECT_ROOT_DIR/Sources/UnitTests/*.pro, true)

// Add them as subdirs
for(unitTestProFile, UNIT_TESTS_PRO_FILES) SUBDIRS *= $$unitTestProFile

【讨论】:

以上是关于在 QMake 项目文件中添加所有子目录的主要内容,如果未能解决你的问题,请参考以下文章

关于qtcreator如何添加代码,进行查看.

Qmake 创建 Visual Studio 项目 - 设置“工作目录”

QtCreator / qmake额外目标没有运行

Qt_SDK_Win_offline_v1_1_beta_en安装环境,win7系统,安装后总是说QMAKE找不到。

如何在 qmake 项目中向 moc 添加特定标志?

Qt中将编译输出路径设置在其他文件