这个问题已经有了答案:
根据CMake文件 if 关键字:
if(DEFINED <variable>) 如果定义了给定变量,则为True。变量是否为真或假并不重要,只要变量已设置。(注意宏参数不是变量。)
if(DEFINED <variable>)
如果定义了给定变量,则为True。变量是否为真或假并不重要,只要变量已设置。(注意宏参数不是变量。)
我有一个小的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 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
使用 if(DEFINED <variable>) 不 if(DEFINED ${<variable>}) . 换句话说,直接使用变量名,不要在 if (除非它包含另一个变量的名称,这是您真正想要测试的)。
if(DEFINED ${<variable>})
if