lin*_*llo 8 c++ build cmake compiler-flags
我最近将我的Qt项目移植qmake到了CMake.我的主程序包含一个取决于#define指令的值.
我想在外部通过指定define指令CMake并构建同一可执行文件的3个不同命名版本.
我该怎么办?
我见过set_target_properties但这只适用于库而不适用于可执行文件.
例如,我想要以下程序,
int main()
{
cout << BUILDTYPE << endl;
}
Run Code Online (Sandbox Code Playgroud)
根据我想要指定的BUILDTYPE "define"
例子,它以3种不同的风格(3个可执行文件)编译CMakeLists.txt
add_executable(myAppV1 -DBUILDTYPE=1)
add_executable(myAppV2 -DBUILDTYPE=2)
add_executable(myAppV3 -DBUILDTYPE=3)
Run Code Online (Sandbox Code Playgroud)
但这不是正确的语法.一些暗示?我得到3个可执行文件打印
你确定set_target_properties不行吗?这个怎么样:
set_target_properties(myAppV1 PROPERTIES COMPILE_FLAGS "-DBUILDTYPE=1")
Run Code Online (Sandbox Code Playgroud)
要么:
set_target_properties(myAppV1 PROPERTIES COMPILE_DEFINITIONS "BUILDTYPE=1")
Run Code Online (Sandbox Code Playgroud)
在我的机器上它工作:
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")
Run Code Online (Sandbox Code Playgroud)