c – 修改qmake文件以构建多个目标以与’#IFDEF宏’一起使用

我想修改我的Qt项目的qmake文件,以便它构建我的程序的两个版本:一个是定义了SOME_FLAG而另一个是不定义的.根据#ifdef SOME_FLAG的结果,我的代码行为会有所不同.

这可能吗?

最佳答案 据我所知,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个空格.

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

点赞