Wenn ich die folgende Zeile habe. Dann würde ich erwarten, dass TEST_OPTION
standardmäßig auf ON
gesetzt wird.CMAKE Standardwert für Optionen funktioniert nicht
option(TEST_OPTION "A test option" ON)
Wenn ich es testen, scheint es nicht ON
standardmäßig zu sein. Um zu testen, ich bin die Erstellung eine einfache Anwendung:
int main() {
#ifdef TEST_OPTION
#error "TEST_OPTION encountered"
#endif
return 0;
}
Ich habe auch eine einfache CMakeLists.txt:
cmake_minimum_required(VERSION 2.6)
project(test)
add_executable(test main.cpp)
option(TEST_OPTION "A test option" ON)
if(TEST_OPTION)
target_compile_definitions(test PRIVATE TEST_OPTION)
endif(TEST_OPTION)
Wenn ich versuche, mit $ cmake && cmake --build .
zu kompilieren, ich würde erwarten, dass der Compiler-Fehler zu begegnen, aber ich nicht! Wenn ich option(TEST_OPTION ...)
durch set(TEST_OPTION ON)
ersetze, dann bekomme ich den Kompilierfehler, den ich erwartete.
Kann jemand erklären, warum option()
die Option nicht standardmäßig auf den Standardwert setzt?
Ihr Testcode sollte funktionieren. Hast du von einem leeren Build-Verzeichnis angefangen? – Florian
Wow, du hast Recht! Der CMakeCache wurde nicht aktualisiert. Ich musste den CMake-Cache löschen, dann wurde der Fehler wie erwartet ausgelöst. – Stewart