2012-01-26 140 views

回答

259

为此,CMake有add_definitions命令。举个例子:

add_definitions(-DOPENCV_VERSION=${OpenCV_VERSION}) 
    add_definitions(-DWITH_OPENCV2) 

虽然看起来很编译器特有的,它的工作原理跨平台的,由于一些挂羊头卖狗肉,我们都知道,爱从CMake的。 CMake是一个如此破旧的系统。在这里命令

更多的解释:https://cmake.org/cmake/help/latest/command/add_definitions.html

+0

这适用于我谢谢=) – Mythli

126

要为特定的目标做到这一点,你可以做到以下几点:

target_compile_definitions(my_target PRIVATE FOO=1 BAR=1) 

,如果你有一个以上的目标你应该这样做,你重新建设,你不希望他们都使用相同的标志。

+4

应该是答案!它更具体和更安全的使用! – Gabriel

+0

我认为这个选项只适用于自定义目标定义。我无法得到这个工作的默认目标。 – Mike

+0

@JimHunziker'target_compile_definitions(my_target PRIVATE FOO = 1)'与'set_source_files_properties(foo.cpp PROPERTIES COMPILE_DEFINITIONS -DFOO = 1)'有什么不同? –