Tut CMAKE_BUILD_TYPE=Release
implizit implizieren -DNDEBUG
?
Wenn nicht: Ist es nicht vernünftig zu erwarten, dass diese Implikation stattfindet?
Ich möchte wissen, ob ich folge CMake Code ist in meinem überflüssig CMakeLists.txt:
if (NOT CMAKE_BUILD_TYPE MATCHES Debug)
add_definitions(-DNDEBUG)
endif()
Ja, es wird von CMake gesetzt. Das Durchsuchen des CMake-Codes zeigt, dass es für eine Vielzahl von Compilern festgelegt ist. Wahrscheinlich setzen sie es nur für diese Compiler, die dieses Flag akzeptieren. Hier eine der Zeilen zu GCC:
Modules/Compiler/GNU.cmake: set(CMAKE_${lang}_FLAGS_RELEASE_INIT "-O3 -DNDEBUG")
Beachten Sie jedoch, dass viele Projekte Release/Debug-Flags überschreiben, ohne die ursprüngliche Einstellung beizubehalten, und auch die Definitionen des Benutzers überschreiben.
Ich habe es überprüft und es stellt sich heraus CMake anhängen
-DNDEBUG
Flagge, aber es ist immer noch problematisch, weil CMake-Dokumentation tut nicht ausdrücklich erwähnen, wenn-DNDEBUG
Flag wird hinzugefügt, wennCMAKE_BUILD_TYPE=Debug
Option vorhanden ist. Ich vermeide es lieber, Code zu schreiben, der auf undokumentiertem Verhalten basiert, da er sich in zukünftigen CMake-Versionen ändern kann (obwohl die möglichen Konsequenzen gering wären).– patryk.beza
16. Dezember 2015 um 1:16 Uhr
@iharob: Autor möchte wissen, ob dieses Verhalten Standard/üblich ist und beobachtet wird alle Maschinen. Deshalb überprüfe das bei ihm aktuelle Maschine ist nicht ausreichend (und Autor Tat dies). Google zeigt zumindest auf der ersten Seite keine Antwort. Und die Antwort ist tatsächlich nicht so einfach, wie es scheint. Die in der Frage angegebene Absicht, redundanten Code zu entfernen, ist für die Programmierung vollkommen in Ordnung. Für die Wiedereröffnung gestimmt.
– Zywarew
16. Dezember 2015 um 7:48 Uhr
@Tsyvarev Ich verstehe, es tut mir sehr leid. Das Dienstprogramm mit undokumentiert Dokumentation ist qmake und ich habe mich nicht daran erinnert, werde ich den Kommentar löschen, da er irreführend ist.
– Iharob Al Asimi
16. Dezember 2015 um 14:22 Uhr