2013-05-08 2 views
2

У меня есть простой вопрос, связанный с ключевым словом camke DEFINED. Я не знаю, в каком состоянии это ключевое слово необходимо и в каком состоянии это ключевое слово можно игнорировать. Следующий пример приведен для иллюстрации мой вопрос:Могу ли я игнорировать ключевое слово DEFINED в cmake?

cmake_minimum_required(VERSION 2.8) 
project(TEST) 

if (NOT ABC) 
    set(ABC "hello ABC") 
endif() 

message(${ABC}) 

if (ABC) 
    message(${ABC}) 
endif() 

if (DEFINED ABC) 
    message(${ABC}) 
endif() 

Как видно из примера, если (переменная), и если (DEFINED переменная) работают одинаково. Поэтому возникает вопрос: действительно ли ОПРЕДЕЛЕННО? Любая идея будет оценена по достоинству.

ответ

2

Я заметил, что переменная может быть определена, но ее значение может быть ВЫКЛ, и в этом случае переменная все еще определена, но не включена, что означает, что (переменная) является ложной, а если (ОПРЕДЕЛЕННАЯ переменная) по-прежнему истинна.

set(INITIAL_PASS OFF) 

if (DEFINED INITIAL_PASS) 
    message(${INITIAL_PASS}) 
endif() 

if (INITIAL_PASS) 
    MESSAGE(${INITIAL_PASS}) 
endif() 

set(INITIAL_PASS ON) 

if (DEFINED INITIAL_PASS) 
    message(${INITIAL_PASS}) 
endif() 

if (INITIAL_PASS) 
    MESSAGE(${INITIAL_PASS}) 
endif() 
Смежные вопросы