2012-01-26 7 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)'과 어떻게 다릅니 까? –