修改 qmake 文件以构建到多个目标以与“#IFDEF 宏”一起使用

Pie*_*ter 5 c++ qt

我想修改我的 Qt 项目的 qmake 文件,使其构建我的程序的两个版本:一个SOME_FLAG是定义的,另一个是未定义的。我的代码会根据#ifdef SOME_FLAG.

这可能吗?

cas*_*der 2

据我所知,qmake 只允许一个 TARGET,但有一个例外。也就是说,如果您想构建调试版本和发布版本,可以使用相同的项目文件构建两者。这样,您还可以分别为每个构建指定 DEFINES。请记住,您可以使用 strip 命令在事后删除调试,也许这对您的情况有用。Qt4 HTML 文档(查看它们是否安装在您的系统上)描述了 qmake-common-projects.html 中的 debug_and_release 模式。

也就是说,您可以使用多个项目文件。为每个可执行文件创建一个项目,并为每个项目提供所需的定义。使用 qmake -o 标志为每个目标发出单独的 Makefile,并使用一个 Makefile 来绑定它们。无法帮助您使用 QtCreator,因为我不使用它,但这可以在命令行上使用。说明此方案的示例 Makefile 如下所示:

all: Makefile_A Makefile_B
        $(MAKE) -f Makefile_A
        $(MAKE) -f Makefile_B

Makefile_A: withSomeFlag.pro
        qmake -o $@ $<

Makefile_B: withoutSomeFlag.pro
        qmake -o $@ $<
Run Code Online (Sandbox Code Playgroud)

这只是一个完成这项工作的快速文件,更擅长 Makefiles 的人可能会使其更加通用。 注意: Makefile 缩进是单个制表符,而不是 8 个空格。

另请注意,默认情况下,可执行文件名称与项目文件的基本名称相同。希望这能让你以某种身份继续前进。