作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我最近将我的 Qt
项目从 qmake
移植到了 CMake
。我的主程序包含一个值,该值取决于 #define
指令。
我想通过 CMake
在外部指定 define 指令,并构建同一可执行文件的 3 个不同名称的版本。
我应该怎么做?
我看过 set_target_properties
但这只适用于库而不适用于可执行文件。
例如我想要下面的程序,
int main()
{
cout << BUILDTYPE << endl;
}
它基于 BUILDTYPE "define"
编译成 3 种不同的风格(3 种可执行文件)例如在我的 CMakeLists.txt
我想指定
add_executable(myAppV1 -DBUILDTYPE=1)
add_executable(myAppV2 -DBUILDTYPE=2)
add_executable(myAppV3 -DBUILDTYPE=3)
但这不是正确的语法。一些提示?我得到 3 个打印的可执行文件
最佳答案
您确定 set_target_properties
不起作用吗?这个怎么样:
set_target_properties(myAppV1 PROPERTIES COMPILE_FLAGS "-DBUILDTYPE=1")
或:
set_target_properties(myAppV1 PROPERTIES COMPILE_DEFINITIONS "BUILDTYPE=1")
在我的机器上它工作:
add_executable(myAppV1 main.cpp)
add_executable(myAppV2 main.cpp)
set_target_properties(myAppV1 PROPERTIES COMPILE_DEFINITIONS "BUILDTYPE=1")
set_target_properties(myAppV2 PROPERTIES COMPILE_DEFINITIONS "BUILDTYPE=2")
关于c++ - 如何在 CMake 中构建具有 2 个不同变量值的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9989574/
我是一名优秀的程序员,十分优秀!