Come si definisce una variabile del preprocessore tramite cmake?Definizione macro preprocessore tramite cmake
Il codice equivalente sarebbe #define foo
.
Come si definisce una variabile del preprocessore tramite cmake?Definizione macro preprocessore tramite cmake
Il codice equivalente sarebbe #define foo
.
CMake ha il comando add_definitions
per questo scopo. Un esempio:
add_definitions(-DOPENCV_VERSION=${OpenCV_VERSION})
add_definitions(-DWITH_OPENCV2)
Anche se sembra molto specifico compilatore, funziona cross-platform a causa di qualche inganno che tutti noi conosciamo e amiamo da CMake. CMake è un sistema così squallido.
Maggiori spiegazioni sul comando qui: https://cmake.org/cmake/help/latest/command/add_definitions.html
Per fare questo per un target specifico, è possibile effettuare le seguenti operazioni:
target_compile_definitions(my_target PRIVATE FOO=1 BAR=1)
Si dovrebbe fare questo se si dispone di più di un bersaglio che si stai costruendo e non vuoi che tutti usino le stesse bandiere.
che dovrebbe essere la risposta! è più specifico e più sicuro da usare! – Gabriel
Penso che questa opzione funzioni solo se vengono definiti target personalizzati. Non riesco a farlo funzionare per il target predefinito. – Mike
@JimHunziker In che modo 'target_compile_definitions (my_target FIVATE FOO = 1)' diverso da 'set_source_files_properties (foo.cpp PROPERTIES COMPILE_DEFINITIONS -DFOO = 1)'? –
Questo funziona per me grazie =) – Mythli