Leider hat keines davon den gewünschten Effekt – nämlich CMAKE_BUILD_TYPE ist eingestellt auf Debug (und damit die NDEBUG-flag wird nicht an gcc übergeben).
Zusätzlich habe ich hinzugefügt variable_watch(CMAKE_BUILD_TYPE) zu meiner Hauptsache CMakeLists.txt um zu prüfen, ob der Wert irgendwo überschrieben wird. Aber die erste Ausgabe ist a READ_ACCESS in meiner Hauptsache Zusätzlich habe ich hinzugefügt variable_watch(CMAKE_BUILD_TYPE) zu meiner Hauptsache CMakeLists.txt und der Wert ist bereits vorhanden Release.
Hat jemand eine Idee, warum cmake die Konfiguration ignoriert?
Ich verwende cmake Version 2.8.7.
Haben Sie den Inhalt von überprüft CMakeCache.txt?
– Drew McGowen
28. Mai 2014 um 9:35 Uhr
Ja, es ist eingestellt CMAKE_BUILD_TYPE=Release – und dies sogar manuell ändern und dann erneut ausführen cmake hat keine Wirkung (der Wert in CMakeCache.txt wird wieder überschrieben).
Nein nicht wirklich. Mein Problem ist das nicht CMAKE_BUILD_TYPE=Debug hat nicht die Wirkung, die es haben sollte, sondern die ich nicht einstellen kann CMAKE_BUILD_TYPE zu Debug..
– ma0ho
28. Mai 2014 um 10:04 Uhr
Ich habe bereits das Build-Verzeichnis bereinigt und es erneut versucht, was auch keine Wirkung hatte. Und: Sie haben recht. Ich verwende Unix-Makefiles.
– ma0ho
28. Mai 2014 um 10:40 Uhr
OK, fgrep -R "CMAKE_BUILD_TYPE" endlich das Problem bei mir gefunden. In einigen CMakeLists.txt-Datei habe ich so etwas gefunden:
SET( CMAKE_BUILD_TYPE Release ... FORCE )
Das überschreibt alle benutzerdefinierten Parameter (wegen der FORCE).
Was für mich funktioniert, ist Folgendes:
IF( NOT CMAKE_BUILD_TYPE )
SET( CMAKE_BUILD_TYPE Release ... FORCE )
ENDIF()
Danke für eure Hinweise!
Funktioniert es für Sie? Wenn ich Ninja als Ziel von CMake verwende, scheint es nicht zu funktionieren. Welche CMake-Version verwendest du?
$ ./gen-linux.sh
-- The C compiler identification is GNU 4.8.2
-- The CXX compiler identification is GNU 4.8.2
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
CMAKE_BUILD_TYPE = Debug
Debug build.
-- Configuring done
-- Generating done
-- Build files have been written to: /home/wojci/stack-overflow/cmake-build-type/build/linux
Es zeigt, dass CMAKE_BUILD_TYPE über die Befehlszeile festgelegt und in der CMakeLists.txt-Konfiguration erkannt wird.
Was passiert, wenn Sie es mit Ihrer Version von CMake auf Ihrem System ausführen?
Was ist, wenn jemand dies macht cmake -DCMAKE_BUILD_TYPE=DEBUG?
Haben Sie den Inhalt von überprüft
CMakeCache.txt
?– Drew McGowen
28. Mai 2014 um 9:35 Uhr
Ja, es ist eingestellt
CMAKE_BUILD_TYPE=Release
– und dies sogar manuell ändern und dann erneut ausführencmake
hat keine Wirkung (der Wert inCMakeCache.txt
wird wieder überschrieben).– ma0ho
28. Mai 2014 um 9:38 Uhr
Hängt es damit zusammen? comments.gmane.org/gmane.comp.kde.devel.general/46310
–Martin G
28. Mai 2014 um 9:55 Uhr
Nein nicht wirklich. Mein Problem ist das nicht
CMAKE_BUILD_TYPE=Debug
hat nicht die Wirkung, die es haben sollte, sondern die ich nicht einstellen kannCMAKE_BUILD_TYPE
zuDebug
..– ma0ho
28. Mai 2014 um 10:04 Uhr
Ich habe bereits das Build-Verzeichnis bereinigt und es erneut versucht, was auch keine Wirkung hatte. Und: Sie haben recht. Ich verwende Unix-Makefiles.
– ma0ho
28. Mai 2014 um 10:40 Uhr