修改 qmake 文件以构建到多个目标以与'#IFDEF macro'一起使用
Modifying qmake file to build to multiple targets for use with '#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
文件中,大概在一个有条件的。
相关文章:
- 如何将enable-if与模板参数和参数包一起使用
- 如何将PERF_AMPLE_READ与mmap一起使用
- #ifdef和未声明的标识符
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 如何将C++中的库和头与MinGW一起使用
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- 为什么我不能将 rand() 与数组的大小一起使用?
- 要与"if constexpr"一起使用的编译时消息(在预处理器之后)
- 不能将复制初始化与隐式转换的多个步骤一起使用
- 将fold表达式与std::一起用于两个元组
- spdlog标头仅与外部fmt一起使用.spdlog错误:'内部':不是'fmt'
- C++ Macros #ifdef
- 将 std::allocate_shared 与多态资源分配器一起使用
- 为什么常量词在重载运算符中不与 ostream 对象一起使用<<?
- 将 OpenCV 与 CMAKE 中的项目一起构建为第三方库的正确方法
- 将 exprtk 与自定义类的对象一起使用
- 将 std::set 与基于键的比较器一起使用
- 将 C++ 类与 Rcpp 一起使用,从 C 或 R 修改它
- 将#elif与#ifdef一起使用合法吗
- 修改 qmake 文件以构建到多个目标以与'#IFDEF macro'一起使用