In einem GCC-kompilierten Projekt
g++
und eine verschachtelte Bibliothek mit gcc
kompiliert wird?Bei CMake wird generell empfohlen, ein "out of source" Build durchzuführen. Erstellen Sie Ihren 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
(erneut aus dem Stammverzeichnis Ihres Projekts):
mkdir Debug
cd Debug
cmake -DCMAKE_BUILD_TYPE=Debug ..
make
Release
/Debug
fügt die entsprechenden Flags für Ihren Compiler hinzu. Es gibt auch RelWithDebInfo
und MinSizeRel
Build-Konfigurationen.
Sie können die Flags in Ihrem CMakeLists.txt
über CMAKE_C_FLAGS_DEBUG
und CMAKE_C_FLAGS_RELEASE
ändern/ergänzen, z.
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall")
Siehe CMAKE_BUILD_TYPE für weitere Details.
Bei Ihrer dritten Frage bin ich mir nicht sicher, was Sie genau fragen. CMake sollte den für Ihre verschiedenen Quelldateien geeigneten Compiler automatisch erkennen und verwenden.
Informationen zu Debug-/Release-Flags finden Sie in der Variablen CMAKE_BUILD_TYPE
(Sie übergeben sie als cmake -DCMAKE_BUILD_TYPE=value
). Es werden Werte wie Release
, Debug
usw. verwendet.
http://cmake.org/Wiki/CMake_Useful_Variables#Compilers_and_Tools
cmake verwendet die Erweiterung, um den Compiler auszuwählen. Benennen Sie also einfach Ihre Dateien .c.
Sie können dies mit verschiedenen Einstellungen überschreiben:
Zum Beispiel:
set_source_files_properties(yourfile.c LANGUAGE CXX)
Kompiliert .c-Dateien mit g ++. Der obige Link zeigt auch, wie Sie einen bestimmten Compiler für C/C++ auswählen.
Anstatt die Zeichenfolgen von CMAKE_CXX_FLAGS
direkt zu bearbeiten (was mit string(APPEND CMAKE_CXX_FLAGS_DEBUG " -g3")
besser möglich ist), können Sie add_compiler_options
verwenden:
add_compile_options(
"-Wall" "-Wpedantic" "-Wextra" "-fexceptions"
"$<$<CONFIG:DEBUG>:-O0;-g3;-ggdb>"
)
Dies würde allen Build-Typen die angegebenen Warnungen hinzufügen, aber nur die angegebenen Debugging-Flags für den Build DEBUG
. Beachten Sie, dass Kompilierungsoptionen als CMake-Liste gespeichert werden. Dies ist lediglich eine Zeichenfolge, die die Elemente durch Semikolons ;
trennt.
// CMakeLists.txt: freigeben
set(CMAKE_CONFIGURATION_TYPES "Release" CACHE STRING "" FORCE)
// CMakeLists.txt: debuggen
set(CMAKE_CONFIGURATION_TYPES "Debug" CACHE STRING "" FORCE)
Wenn Sie eine andere Konfiguration erstellen möchten, ohne sie neu zu generieren, können Sie auch cmake --build {$PWD} --config <cfg>
ausführen. Wählen Sie für Tools mit mehreren Konfigurationen <cfg>
aus. Debug, Release, MinSizeRel, RelWithDebInfo
https://cmake.org/cmake/help/v2.8.11/cmake.html#opt%3a--builddir