为什么if(DEFINED <variable>)在cmake中不起作用?

时间:2018-07-31 20:04:35

标签: cmake

根据有关if关键字的CMake文档:

  

if(DEFINED <variable>)

     

如果已定义给定变量,则为真。只要设置了变量,该变量是true还是false都没有关系。 (请注意,宏参数不是变量。)

我有这个小的CMakeLists.txt:

cmake_minimum_required(VERSION 2.6)
project(abc)
message("CMAKE_CXX_FLAGS_DEBUG 1: ${CMAKE_CXX_FLAGS_DEBUG}")
if(DEFINED ${CMAKE_CXX_FLAGS_DEBUG})
message("CMAKE_CXX_FLAGS_DEBUG 2: ${CMAKE_CXX_FLAGS_DEBUG}")
endif(DEFINED ${CMAKE_CXX_FLAGS_DEBUG})
message("CMAKE_CXX_FLAGS_DEBUG 3: ${CMAKE_CXX_FLAGS_DEBUG}")

给出cmake path/to/CMakeLists.txt调用的下一个输出:

CMAKE_CXX_FLAGS_DEBUG 1: -g
CMAKE_CXX_FLAGS_DEBUG 3: -g
-- Configuring done
-- Generating done
-- Build files have been written to: current/dir

第二行在哪里?

CMAKE_CXX_FLAGS_DEBUG 2: -g

1 个答案:

答案 0 :(得分:2)

使用if(DEFINED <variable>)而不是if(DEFINED ${<variable>})。换句话说,请直接使用变量名称,不要在if中展开它(除非它包含您实际要测试的另一个变量的名称)。