Ich habe Probleme, meine Standard-Build-Konfiguration auf "Release" zu setzen. In meiner Datei CMakeLists.txt setze ich CMAKE_BUILD_TYPE am Anfang der Datei mit:
#enable Release ALWAYS, configure vars
set(CMAKE_BUILD_TYPE Release)
set(EXECUTABLE_NAME "ParticleSimulator")
set(VERSION_MAJOR 0)
set(VERSION_MINOR 2)
Beim Erstellen meines Projekts und Öffnen der Lösung wird jedoch immer der Debug-Modus angezeigt, der nicht in meiner CMakeLists-Datei angegeben ist. Was mache ich falsch?
Ich habe mir dort einige der anderen Fragen angesehen, aber nichts Spezielles für diese Frage gesehen.
Ein Kern der CMakeLists.txt .
build
cmake
build-system
Syntaktische Fruktose
quelle
quelle
CMAKE_BUILD_TYPE
Arbeit blockiert ...set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Configuration type" FORCE)
was nicht funktioniert hatset(CMAKE_BUILD_TYPE Release)
Das ist nicht , wie es funktioniert. Aus Versehen funktioniert dies für denMakefile
Generator. Bei IDEs wie Xcode und Visual Studio wird diese Zeile ignoriert, da Release / Debug intern umgeschaltet wurde. Die Dokumentation ist ziemlich klar. Wenn Sie Ihre Build-Varianten einschränken möchten, müssen Sie CMAKE_CONFIGURATION_TYPESAntworten:
Es gibt zwei Arten von Generatoren: Einzelkonfigurationen und Mehrfachkonfigurationen.
Einzelne Konfigurationen
Make-like-Generatoren: Unix-Makefiles , NMake-Makefiles , MinGW-Makefiles , ...
Den Konfigurationstyp legen Sie im Generierungsschritt fest:
In diesem Fall lautet der Erstellungsschritt immer Debug :
Multi-Konfiguration
IDE-Generatoren: Visual Studio , Xcode
CMAKE_BUILD_TYPE
Beim Generieren wird der Schritt ignoriert. Beide:und
wird den gleichen Effekt haben:
Dies liegt daran, dass alle Konfigurationen intern sind (dh
_builds/msvc-opaque/Release
und_builds/msvc-opaque/Debug
oder etwas spielt keine Rolle). Sie können--config
Optionen verwenden, um zu wechseln:Steuerung (?)
Ja, du kannst. Definieren Sie einfach CMAKE_CONFIGURATION_TYPES :
Standardausgabe:
Schreiben Sie es um:
Sie können sogar Ihren eigenen Konfigurationstyp definieren:
Und bauen:
Chaotisch (?)
Überhaupt nicht, wenn Sie den Trick kennen :) So erstellen / testen Sie die Konfiguration in den Erstellungsanweisungen eines Skripts / CI-Servers / der Dokumentation usw.:
Schlechtes Muster
Gut
Funktioniert gut.
Vielen Dank! :) Sie sparen einen Tag für einen Programmierer.
Arbeitet für mich mit Makefile, ich bin glücklich ...
Ein Zitat aus einem schönen Buch eines netten Mannes, den Sie wahrscheinlich kennen (Hervorhebung von mir):
quelle
CMAKE_BUILD_TYPE
auf ReleaseCmakeList.txt
? Ich denke, es ist irgendwo im Abschnitt Control (?) , Aber ich habe Probleme beim Parsen, weil ich zu unerfahren bin. Beachten Sie auch, dass wir nur den Standardwert festlegen möchten. Die Geldstrafe des Benutzers überschreibt sie über die Befehlszeile.-H.
ist eine undokumentierte Funktion .Sie können auch folgendes Snippet verwenden:
quelle
Eine Möglichkeit besteht darin, dass eines der Submodule den
CMAKE_BUILD_TYPE
Wert im Cache festgelegt hat, dh:Dies bedeutet, dass dieser Wert von diesem Punkt bis zum Ende des Konfigurationslaufs dauerhaft aktualisiert wird.
Eine gute Möglichkeit, den Ort zu verfolgen, an dem sich dieser Wert geändert hat, ist die Verwendung von CMakes variable_watch . Fügen Sie in Ihrer Hauptdatei
CMakelists.txt
die folgende Zeile hinzuDadurch wird bei jedem Zugriff auf diese Variable der Standardfehler ausgegeben. Und um die Datei zu protokollieren, gehen Sie wie folgt vor:
Sie können etwas sehen wie:
Dann werden Sie wahrscheinlich die Punkte sehen, an denen CMAKE_BUILD_TYPE zum ersten Mal geändert wurde. Und von hier aus sind Sie viel näher dran, um die beleidigende CMake-Linie zu verfolgen.
quelle