2012-01-26 225 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)'有什麼不同? –