Ho appena iniziato a utilizzare CMake per alcuni progetti personali e scolastici e sono stato perplesso da un problema minore.CXX_FLAGS condizionale che utilizza cmake in base al compilatore?
Diciamo che sto cercando di ottenere un programma C++ compilato sotto più compilatori (g ++, cl e bcc32 in questo caso). Ho diversi switch a linea di comando per ogni compilatore, e quello che stavo tentando di fare era fondamentalmente creare una directory gnu/ms/borland e creare elementi di CMake (inserendo le directory e facendo un .. nello gnu, directory, per esempio).
Nel CMakeLists.txt sulla directory di primo livello, ho provato a fare qualcosa sulla falsariga di:
if(CMAKE_CXX_COMPILER STREQUAL g++)
set(CMAKE_CXX_FLAGS "-Wextra -Wall -ansi -pedantic")
E così via con elsifs per gli altri compilatori, ma questo non sembra funzionare correttamente - lascia cadere completamente il CXXFLAGS
. La linea funziona se faccio il file completamente incondizionato (cioè, si assuma semplicemente g ++ e si usi flag g ++.).
Che cosa sto facendo male qui, o c'è un modo migliore per gestire questo tipo di problema?
nota, ' CMAKE_COMPILER_IS_GNUCXX' è solo per g ++. L'OP chiede C++, giusto, ma è bene sapere che c'è anche 'CMAKE_COMPILER_IS_GNUCC' per evitare confusioni. – mloskot