我可以忽略cmake中的关键词DEFINED吗?

时间:2013-05-08 13:44:21

标签: cmake

我有一个与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变量)的功能是否相同。因此,出现了一个问题:确定是否真的有必要?任何想法将不胜感激。

1 个答案:

答案 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()