Wie aktiviere ich Assert im CMake Release-Modus?

8

CMake wird verwendet, um einige C ++ - Dateien zu kompilieren. Es gibt assert Aufrufe im Code. Diese Aufrufe sind im Freigabemodus von CMake deaktiviert. Es definiert NDEBUG im Release-Modus, denke ich.

Wenn ich daran interessiert bin, CMake im Release-Modus zu aktivieren, wie kann ich es aktivieren?

    
Ashwin Nanjappa 03.03.2014, 06:56
quelle

3 Antworten

1

1

Wenn Sie an assert Funktionalität nur in Ihrem eigenen Code interessiert sind, dann die einfache Lösung ist es, benutzerdefinierte Assert bereitzustellen. Zum Beispiel:

%Vor%

Verwenden Sie option , um die Aktivierung zu aktivieren / deaktivieren:

%Vor%

In diesem Fall haben Sie die volle Kontrolle über Ihre Schecks, Sie können dies überprüfen Komponente und andere ignorieren:

%Vor%

2

Fügen Sie eine benutzerdefinierte CMAKE_BUILD_TYPE hinzu (siehe auch CMAKE_CONFIGURATION_TYPES ):

%Vor%

Ausgabe:

%Vor%     
user2288008 05.03.2014, 05:21
quelle
2

Siehe diese Antwort in der CMake-FAQ, d. h .:

Beheben Sie es manuell, indem Sie die Definition der Cache-Variablen CMAKE_C_FLAGS_RELEASE und CMAKE_CXX_FLAGS_RELEASE ändern. Dies muss jedes Mal getan werden, wenn Sie ein neues Build-Verzeichnis einrichten.

Um es dauerhaft zu beheben, erstellen Sie eine benutzerdefinierte CMake-Regeldatei in Ihrem Quellordner mit den gewünschten Einstellungen für die Freigabeflags (lassen Sie die Option /D NDEBUG weg). Dann zeigen Sie in Ihrer äußersten CMakeLists.txt die Variable CMAKE_USER_MAKE_RULES_OVERRIDE auf die benutzerdefinierte CMake-Regeldatei.

    
sakra 03.03.2014 12:44
quelle
2

Dies wäre eine Lösung für den MSVC-Compiler:

%Vor%

Eine bessere Option könnte sein, zu aktivieren, dass nicht im Freigabe-Modus, sondern im RelWithDebInfo-Modus statt:

aktiviert wird %Vor%

Aber das hängt natürlich von Ihrem Projekt und Ihren Vorlieben ab.

    
letmaik 08.02.2017 17:35
quelle

Tags und Links