Non riesco a ottenere cmake
per verificare se un preprocessore è stato definito o meno. Ad esempio:cmake: come verificare se il preprocessore è definito
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()
I seguenti test non funzionano:
if (NOT COMMAND OS)
if (NOT DEFINED OS)
if (NOT OS)
posso farlo funzionare utilizzando set()
e proprio test per un cmake
variabili regolare e quindi la definizione della macro preprocessore. Ad esempio:
set(OS LINUX)
if (OS)
add_definitions(-DOS=${OS})
else()
message(FATAL_ERROR "OS is not defined")
endif()
Nel caso in cui, ti stai chiedendo perché ho bisogno di testare se la variabile/preprocessore è nello stesso file , è perché nella realizzazione finale di questi verranno da un file esterno che è include
ed in principale CMakeFile.txt Es:
include(project_defs.txt)
if (OS)
....
Cosa intendi con pre-processore? CMake non ne ha uno ... – usr1234567
CMake definisce automaticamente diverse variabili, che descrivono il sistema.Quindi puoi controllare (in comando 'if') queste variabili per includere il codice dipendente dal SO. Vedi [Variabili che forniscono informazioni] (https://cmake.org/cmake/help/v3.0/manual/cmake-variables.7.html#variables-that-provide-information). – Tsyvarev
@ usr1234567 di pre-processore intendevo una variabile definita dall'opzione '-D' a' gcc' (come '# define'). –