我有一个与camke关键字DEFINED相关的简单问题。我不知道这个关键字在哪种情况下是必要的,在哪种情况下可以忽略这个关键字。以下示例用于说明我的问题:
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()
从示例中可以看出,if(变量)和if(DEFINED变量)的功能是否相同。因此,出现了一个问题:确定是否真的有必要?任何想法将不胜感激。
答案 0 :(得分:2)
我注意到可以定义一个变量,但是它的值可以是OFF,在这种情况下,变量仍然被定义但不是ON,这意味着if(变量)是false而if(DEFINED变量)仍然是真。
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()