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

标签 cmake

这个问题在这里已经有了答案:





cmake DEFINED does not seems to recognize variable

(1 个回答)


3年前关闭。




根据 if 上的 CMake 文档关键词:

if(DEFINED <variable>)

True if the given variable is defined. It does not matter if the variable is true or false just if it has been set. (Note macro arguments are not variables.)


我有这个小的 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

最佳答案

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

关于cmake - 为什么 if(DEFINED <variable>) 在 cmake 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51621228/

相关文章:

python - ROS1 catkin_make 失败 : catkin_install_python() called without required DESTINATION argument

cmake - 指定 CTestTestfile.cmake 的目标

ubuntu - 尝试在 Ubuntu 上构建 OpenCV 3 世界模块时出现 CMake 不存在目标错误

android - 在没有 Android Studio 的情况下为 Android 创建 (Cmake) C/C++ 库

cmake - 交叉编译并链接到 sysroot 中的库 - 怎么了?

c++ - std::experimental::与ndk/clang一起使用

c++ - CMake 链接器找不到不以 "lib"开头的库

c++ - 在 OSX 上使用 CMake 将 Adob​​e 的 XMP 工具包构建为共享库的最简单方法是什么?

c++ - 在 Google 的 C++ 测试框架中为多个单元测试创​​建一个二进制文件

c++ - 强制 Boost 使用 C++11 线程