本文介绍了如何建立一个程序,在CMake的变量的2个不同的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我最近我的移植的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个不同的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

11-01 00:01