2012-01-26 16 views

Odpowiedz

259

CMake ma do tego celu polecenie add_definitions. Przykład:

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

Choć wygląda bardzo specyficzne kompilator, działa na różnych platformach z powodu jakiegoś oszustwa wszyscy wiemy i miłości z CMake. CMake to taki odrapany system.

więcej wyjaśnień na komendzie tutaj: https://cmake.org/cmake/help/latest/command/add_definitions.html

+0

To działa na mnie dzięki =) – Mythli

126

Aby to zrobić dla konkretnego celu, można wykonać następujące czynności:

target_compile_definitions(my_target PRIVATE FOO=1 BAR=1) 

Należy to zrobić, jeśli masz więcej niż jeden cel, który Cię budujesz i nie chcesz, żeby wszyscy używali tych samych flag.

+4

, która powinna być odpowiedzią! jest bardziej szczegółowy i bezpieczniejszy w użyciu! – Gabriel

+0

Myślę, że ta opcja działa tylko wtedy, gdy zdefiniowane są niestandardowe cele. Nie mogę zrobić tego dla domyślnego celu. – Mike

+0

@JimHunziker W jaki sposób 'target_compile_definitions (my_target PRIVATE FOO = 1)' różni się od 'set_source_files_properties (foo.cpp PROPERTIES COMPILE_DEFINITIONS -DFOO = 1)'? –

Powiązane problemy