两种不同的CMake定义

时间:2015-06-12 07:06:12

标签: cmake

使用CMake定义某些定义时,它们以这种方式定义:

add_definitions(-DMY_DEFINITION)

有时我会看到人们以不同的方式制定定义:

add_definitions(-DMY_DEFINITION=1)

然后我的问题是它们在生成的C ++项目中的区别。谢谢。

1 个答案:

答案 0 :(得分:3)

这与CMake无关,而是与C / ++编译器有关。 在代码中,差异是相同的:

#define MY_DEFINITION 1

#ifndef MYHEADER
#define MYHEADER
// ...
#endif

实际上,如果您想要的唯一事情就是知道宏是否存在(已经定义),就像不需要为C / ++宏定义一个值,例如"标记&#34 ;。最好的例子是标题包括警卫:

#ifdef MY_DEFINITION
    // Do something
#else
    // Do somthing else
#endif

但有时人们更喜欢设定一个值(比如= 1),即使他们不需要它,因为它更详尽或更清楚。

更一般地说,当您影响宏的值时,这是因为您希望宏名称扩展为该值。如果没有,你只是期望价值存在。测试的方式可能有所不同:

使用-DMY_DEFINITION:

#if MY_DEFINITION
    // Do something
#else
    // Do somthing else
#endif

-DMY_DEFINITION = 1

BFTask