Ich kann cmake
nicht testen, ob ein Präprozessor definiert wurde oder nicht. ZB:cmake: Wie überprüft man, ob der Präprozessor definiert ist
cmake_minimum_required(VERSION 2.8.9)
project (cmake-test)
add_definitions(-DOS=LINUX)
if(NOT <what condition goes here?>)
message(FATAL_ERROR "OS is not defined")
endif()
Die folgenden Tests nicht funktionieren:
if (NOT COMMAND OS)
if (NOT DEFINED OS)
if (NOT OS)
ich es mithilfe set()
zu arbeiten und die Prüfung nur für einen regelmäßigen cmake
Variable und dann die Definition der Präprozessormakro. ZB:
set(OS LINUX)
if (OS)
add_definitions(-DOS=${OS})
else()
message(FATAL_ERROR "OS is not defined")
endif()
Falls Sie sich fragen, warum ich es testen müssen, wenn die Variable/Präprozessor in der gleichen Datei ist, dann ist es, weil in der letzten Durchführung dieser aus einer externen Datei kommen, die ist include
ed im Haupt CMakeFile.txt Eg:
include(project_defs.txt)
if (OS)
....
Was meinst du mit Pre-Prozessor? CMake hat keinen ... – usr1234567
CMake definiert automatisch mehrere Variablen, die das System beschreiben.Sie können also diese Variablen (in 'if'-Befehl) prüfen, um OS-abhängigen Code einzuschließen. Siehe [Variablen, die Informationen bereitstellen] (https://cmake.org/cmake/help/v3.0/manual/cmake-variables.7.html#variables-that-provide-information). – Tsyvarev
@ usr1234567 von Pre-Prozessor Ich meine eine Variable definiert durch die '-D-Option zu' gcc' (das gleiche wie '# define'). –