#ifdef DEBUG mit CMake unabhängig von der Plattform
Ich bin mit CMake für den Aufbau meiner Projekte auf Windows (Visual Studio) als auch auf Linux-Maschinen(gcc). Ich möchte mark etwas code "Debuggen", wie mit
#ifdef DEBUG
//some logging here
#endif
Die Frage ist: welchen compiler definition ist auf allen Plattformen verfügbar, die in der CMake "Debug" - build geben? DEBUG scheint nicht zu existieren. (Ich will das logging oder was auch immer nur, wenn das build-Typ "Debug" aus.)
InformationsquelleAutor der Frage Philipp | 2011-12-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde vorschlagen, dass Sie Ihre eigenen hinzufügen. Die cmake-symbol
CMAKE_C_FLAGS_DEBUG
enthalten kann, die flags, die nur im Debug-Modus. Zum Beispiel:(Vielleicht, Sie müssten
"/DMY_DEBUG"
für visual studio.)InformationsquelleAutor der Antwort Lindydancer
CMake fügt
-DNDEBUG
zu den CMAKE_C_FLAGS_{RELEASE, MINSIZEREL} standardmäßig aktiviert. So können Sie#ifndef NDEBUG
.InformationsquelleAutor der Antwort arrowd
In CMake >= 2.8, verwenden Sie
target_compile_definitions
:Beim kompilieren im Debug-Modus, wird dies definiert das DEBUG-symbol in Ihrem code verwenden. Es wird funktionieren, auch in IDEs wie Visual Studio und Xcode für die cmake generiert eine einzelne Datei für alle compilation-Modi.
Dies müssen Sie für jedes einzelne Ziel [1]. Alternativ können Sie die
add_compile_options
(Cmake >= 3.0):Beachten Sie, dass die neuesten Versionen von Visual C++ (mindestens seit VS2015) erlauben entweder /oder - Parameter, so sollte es funktionieren, über Compiler. Dieser Befehl ist auch nützlich für die anderen compile-Optionen, die Sie vielleicht hinzufügen möchten ("/O2" im release-Modus für MSVC oder "-O3" für den release-Modus, die in G++/Clang)
[1] : Hinweis: in CMake >= 3.12 (derzeit beta) gibt es auch ein
add_compile_definitions
unterstützt, generator-Ausdrücke, die auf alle Ziele.InformationsquelleAutor der Antwort jtbr