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



我想修改我的Qt项目的qmake文件,这样它就构建了我的程序的两个版本:一个是定义了SOME_FLAG的,另一个不是。我的代码将根据#ifdef SOME_FLAG的结果表现不同。

这可能吗?

据我所知,qmake只允许一个TARGET,只有一个例外。也就是说,如果您想构建调试版本和发布版本,那么可以使用相同的项目文件构建这两个版本。这样,您还可以分别为每个构建指定定义。请记住,您可以使用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 $@ $<

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

还要注意,默认情况下,可执行文件名与项目文件的基本名称相同。

可以添加

DEFINES += "SOME_FLAG"

在你的.pro文件中,大概在一个有条件的。

最新更新