Debug vs Release in CMAKE

In einem GCC-kompilierten Projekt

  • Wie cmake für jeden cmake (debug / release)?
  • Wie spezifiziert man Debug- und Release-C / C ++ Flags mit cmake ?
  • wie man ausdrückt, dass die Hauptdatei mit g++ und eine verschachtelte Bibliothek mit gcc kompiliert wird?

Mit cmake wird im Allgemeinen empfohlen, einen Out-of-Source-Build zu erstellen . Erstellen Sie Ihre CMakeLists.txt im Stammverzeichnis Ihres Projekts. Dann von der Wurzel Ihres Projekts:

 mkdir Release cd Release cmake -DCMAKE_BUILD_TYPE=Release .. make 

Und für Debug (wieder von der Wurzel Ihres Projekts):

 mkdir Debug cd Debug cmake -DCMAKE_BUILD_TYPE=Debug .. make 

Release / Debug fügt die passenden Flags für Ihren Compiler hinzu. Es gibt auch RelWithDebInfo und MinSizeRel Build-Konfigurationen.


Sie können die Flags in Ihrer CMakeLists.txt über die Variablen CMAKE_C_FLAGS_DEBUG und CMAKE_C_FLAGS_RELEASE ändern / hinzufügen, zB:

 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall") 

Weitere Informationen finden Sie unter CMAKE_BUILD_TYPE .


Was deine dritte Frage betrifft, bin ich mir nicht sicher, was genau du fragst. CMake sollte den für Ihre verschiedenen Quelldateien geeigneten Compiler automatisch erkennen und verwenden.

CMAKE_BUILD_TYPE zum Debuggen / Freigeben finden Sie in der Variablen CMAKE_BUILD_TYPE (übergeben Sie sie als cmake -DCMAKE_BUILD_TYPE=value ). Es benötigt Werte wie Release , Debug etc.

http://cmake.org/Wiki/CMake_Useful_Variables#Compilers_and_Tools

cmake verwendet die Erweiterung, um den Compiler auszuwählen. Benennen Sie einfach Ihre Dateien .c.

Sie können dies mit verschiedenen Einstellungen überschreiben:

Beispielsweise:

 set_source_files_properties(yourfile.c LANGUAGE CXX) 

Würde .c-Dateien mit g ++ kompilieren. Der obige Link zeigt auch, wie man einen spezifischen Compiler für C / C ++ auswählt.

// CMakeLists.txt: Freigabe

 set(CMAKE_CONFIGURATION_TYPES "Release" CACHE STRING "" FORCE) 

// CMakeLists.txt: debuggen

 set(CMAKE_CONFIGURATION_TYPES "Debug" CACHE STRING "" FORCE) 

Anstatt die CMAKE_CXX_FLAGS Zeichenfolgen direkt zu manipulieren (was mit Hilfe der list(APPEND CMAKE_CXX_FLAGS_DEBUG "-g3") btw) list(APPEND CMAKE_CXX_FLAGS_DEBUG "-g3") könnte, können Sie add_compiler_options :

 add_compile_options( "-Wall" "-Wpedantic" "-Wextra" "-fexceptions" "$< $:-O0;-g3;-ggdb>" ) 

Dies würde die angegebenen Warnungen zu allen Build-Typen hinzufügen, aber nur die angegebenen Debugging-Flags zum DEBUG Build. Beachten Sie, dass die Kompilierungsoptionen als cmake-Liste gespeichert werden, bei der es sich lediglich um eine Zeichenfolge handelt, die ihre Elemente durch Semikolons trennt ; .