Ich habe gerade begonnen, CMake für einige persönliche und schulische Projekte zu verwenden, und ich bin durch ein kleines Problem ratlos.Bedingte CXX_FLAGS mit Cmake basierend auf Compiler?
Angenommen, ich versuche, ein C++ - Programm kompilieren unter mehreren Compilern (in diesem Fall g ++, cl und bcc32). Ich habe verschiedene Befehlszeilenschalter für jeden Compiler, und was ich zu tun versuchte, war im Grunde ein gnu/ms/borland-Verzeichnis zu erstellen und CMake Zeug dort (durch Eingabe der Verzeichnisse und eine cmake -DCMAKE_CXX_COMPILER=g++
.. im gnu, Verzeichnis, zum Beispiel).
Im CMakeLists.txt auf der obersten Ebene, versuchte ich etwas entlang der Linien von:
if(CMAKE_CXX_COMPILER STREQUAL g++)
set(CMAKE_CXX_FLAGS "-Wextra -Wall -ansi -pedantic")
Und so weiter mit elsifs für die anderen Compiler, aber dies scheint nicht richtig zu funktionieren - Es lässt die CXXFLAGS
vollständig fallen. Die Zeile funktioniert, wenn ich die Datei vollständig bedingungslos mache (dh nehme einfach g ++ an und verwende g ++ - Flags).
Was mache ich hier falsch, oder gibt es einen besseren Weg, um mit dieser Art von Problem umzugehen?
Hinweis, ' CMAKE_COMPILER_IS_GNUCXX' ist nur für g ++. Das OP fragt nach C++, richtig, aber es ist gut zu wissen, dass es auch 'CMAKE_COMPILER_IS_GNUCC 'gibt, um Verwirrungen zu vermeiden. – mloskot