Acabo de empezar a utilizar CMake para algunos proyectos personales y escolares, y me ha dejado perplejo un pequeño problema.Condicional CXX_FLAGS utilizando cmake basado en el compilador?
Digamos que estoy tratando de obtener una compilación de programas C++ bajo múltiples compiladores (g ++, cl y bcc32 en este caso). Tengo diferentes conmutadores de línea de comandos para cada compilador, y lo que estaba intentando hacer era básicamente crear un directorio gnu/ms/borland y crear CMake cosas allí (al ingresar los directorios y haciendo un cmake -DCMAKE_CXX_COMPILER=g++
... en el gnu, directorio, por ejemplo).
En el CMakeLists.txt en el directorio de nivel superior, he intentado hacer algo en la línea de:
if(CMAKE_CXX_COMPILER STREQUAL g++)
set(CMAKE_CXX_FLAGS "-Wextra -Wall -ansi -pedantic")
Y así sucesivamente con elsifs para los otros compiladores, pero esto no parece funcionar correctamente - Deja caer el CXXFLAGS
por completo. La línea funciona si hago el archivo completamente incondicional (es decir, simplemente asumo g ++ y uso g ++ flags.).
¿Qué estoy haciendo mal aquí, o hay una mejor manera de manejar este tipo de problema?
Nota, ' CMAKE_COMPILER_IS_GNUCXX' es solo para g ++. El OP pide C++, correcto, pero es bueno saber que también hay 'CMAKE_COMPILER_IS_GNUCC' para evitar confusiones. – mloskot