可以通过get_cmake_property命令来获取CMake的全局范围属性。
命令格式
get_cmake_property(<var> <property>)
其中<var>是属性获取的结果,<property>是属性名称,如果属性未找到,那么变量<var>被设置成NOTFOUND
。
简单示例
下面演示全局属性的获取方法,以CMAKE_ROLE属性为例,它表示当前CMake脚本的运行模式,例如是通过处理CMakeLists.txt文件运行(PROJECT模式),或者通过命令行使用-P参数指定脚本(SCRIPT模式)等。更多的CMake内置全局属性可以参考这里。
CMakeLists.txt文件内容:
cmake_minimum_required(VERSION 3.22.1)
project(test)
get_cmake_property(role CMAKE_ROLE)
message("# Run CMake in mode: ${role}")
get_cmake_property(not_found_property CMAKE_NOT_EXIST_PROPERTY)
message("# Get one non exist property: ${not_found_property}")
当运行cmake .
得到的输出如下:
# Run CMake in mode: PROJECT
# Get one non exist property: NOTFOUND
新建文件PrintCMakeMode.cmake,内容如下:
get_cmake_property(role CMAKE_ROLE)
message("# Run CMake in mode: ${role}")
运行cmake -P PrintCMakeMode.cmak
时,得到的输出如下:
# Run CMake in mode: SCRIPT