Bedeutet CMAKE_BUILD_TYPE=Release
implizit implizit -DNDEBUG
?Ist CMAKE_BUILD_TYPE = Freigabe impliziert -DNDEBUG?
Wenn nicht: ist es nicht vernünftig zu erwarten, dass diese Implikation stattfindet?
Ich möchte wissen, ob folgende CMake Code in meinem CMakeLists.txt redundant ist:
if (NOT CMAKE_BUILD_TYPE MATCHES Debug)
add_definitions(-DNDEBUG)
endif()
Ich überprüfte es und es stellt sich heraus, dass * CMake * das '-DNDEBUG'-Flag anhängt, aber es ist immer noch problematisch, weil [CMake-Dokumentation] (https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE. html) erwähnt ** nicht ** explizit, wenn das '-DNDEBUG' Flag hinzugefügt wird, wenn 'CMAKE_BUILD_TYPE = Debug' Option vorhanden ist. Ich bevorzuge es, Code zu schreiben, der auf undokumentiertem Verhalten basiert, weil er sich in zukünftigen CMake-Versionen ändern könnte (obwohl die möglichen Konsequenzen gering wären). –
Sie meinen! = Im Titel? Ich würde definitiv Debug-Builds erwarten, um 'NDEBUG' zu definieren. – immibis
@immibis - danke. Natürlich war es ein Tippfehler. Ich habe meine Frage bearbeitet. +1 –