根据有关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
答案 0 :(得分:2)
使用if(DEFINED <variable>)
而不是if(DEFINED ${<variable>})
。换句话说,请直接使用变量名称,不要在if
中展开它(除非它包含您实际要测试的另一个变量的名称)。