问题描述
我最近我的移植的Qt
项目从的qmake
到 CMake的
。
我的主要程序包含取决于的#define
指令的值。
I've recently ported my Qt
project from qmake
to CMake
.My main program contains a value which depends on a #define
directive.
我要指定通过 CMake的
外部定义指令,并建立不同的3相同名字的可执行文件的版本。
I want to specify that define directive externally via CMake
and build 3 differently named versions of the same executable.
我应该怎么办呢?
我见过 set_target_properties
但这只是作品库,而不是可执行文件。
I've seen set_target_properties
but this only works for libraries and not for executables.
例如我想,下面的程序,
For example I want that the following program,
int main()
{
cout << BUILDTYPE << endl;
}
它的基础上的 BUILDTYPE定义
3种不同口味(3可执行文件)编译
例如,在我的的CMakeLists.txt
我想指定
it's compiled in 3 different flavors (3 executables) based on the BUILDTYPE "define"
For example in my CMakeLists.txt
I want to specify
add_executable(myAppV1 -DBUILDTYPE=1)
add_executable(myAppV2 -DBUILDTYPE=2)
add_executable(myAppV3 -DBUILDTYPE=3)
,但这不是正确的语法。
一些提示吗?
我得到3可执行文件它打印
but this is not the correct syntax.Some hint?and I get 3 executables which prints
推荐答案
您确定 set_target_properties
不起作用?这个怎么样:
Are you sure that set_target_properties
does not work? How about this one:
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")
这篇关于如何建立一个程序,在CMake的变量的2个不同的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!