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 (変数) と if (DEFINED 変数) は同じように機能します。したがって、疑問が生じます: 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 に答える