可以通過(guò)get_cmake_property命令來(lái)獲取CMake的全局范圍屬性纤掸。
命令格式
get_cmake_property(<var> <property>)
其中<var>是屬性獲取的結(jié)果肉拓,<property>是屬性名稱褥傍,如果屬性未找到裂问,那么變量<var>被設(shè)置成NOTFOUND
。
簡(jiǎn)單示例
下面演示全局屬性的獲取方法张峰,以CMAKE_ROLE屬性為例泪蔫,它表示當(dāng)前CMake腳本的運(yùn)行模式,例如是通過(guò)處理CMakeLists.txt文件運(yùn)行(PROJECT模式)喘批,或者通過(guò)命令行使用-P參數(shù)指定腳本(SCRIPT模式)等撩荣。更多的CMake內(nèi)置全局屬性可以參考這里。
CMakeLists.txt文件內(nèi)容:
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}")
當(dāng)運(yùn)行cmake .
得到的輸出如下:
# Run CMake in mode: PROJECT
# Get one non exist property: NOTFOUND
新建文件PrintCMakeMode.cmake饶深,內(nèi)容如下:
get_cmake_property(role CMAKE_ROLE)
message("# Run CMake in mode: ${role}")
運(yùn)行cmake -P PrintCMakeMode.cmak
時(shí)餐曹,得到的輸出如下:
# Run CMake in mode: SCRIPT