我想修改我的Qt项目的qmake文件,使其构建我的程序的两个版本:一个定义SOME_FLAG
,另一个定义不定义。我的代码的行为会有所不同,具体取决于#ifdef SOME_FLAG
的结果。
这可能吗?
答案 0 :(得分:1)
您可以添加
DEFINES += "SOME_FLAG"
在您的.pro
文件中,可能是在条件中。
答案 1 :(得分:1)
据我所知,qmake只允许一个TARGET,但有一个例外。也就是说,如果要构建调试版本和发布版本,可以使用相同的项目文件构建它们。这样,您还可以单独为每个构建指定DEFINES。请记住,您可以使用strip命令在事后删除调试,这可能适用于您的情况。 Qt4 HTML文档(查看它们是否安装在您的系统上)描述了qmake-common-projects.html中的debug_and_release模式。
现在说,你可以获得多个项目文件。为每个可执行文件创建一个项目,每个项目都有所需的DEFINES。使用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 $@ $<
这只是一个完成工作的快速文件,Makefiles中的某些人可能会使它更通用。 注意: Makefile缩进是单个TAB字符,而不是8个空格。
另请注意,默认情况下,可执行文件名与项目文件的基名相同。希望这能让你以某种身份前进。