2

我有一个与 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 (variable) 和 if (DEFINED variable) 功能相同。因此,出现了一个问题:DEFINED 真的有必要吗?任何想法将不胜感激。

4

1 回答 1

2

我注意到可能定义了一个变量,但它的值可以是 OFF,在这种情况下,变量仍然定义但不是 ON,这意味着 if(variable) 为 false 而 if(DEFINED variable) 仍然为 true。

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()
于 2013-05-08T13:53:07.907 回答