PROJECT_IS_TOP_LEVEL¶
於 3.21 版本新增。
一個布林變數,指示最近在目前作用域或上方呼叫的 project()
命令是否位於最上層的 CMakeLists.txt
檔案中。
某些模組應僅作為最上層 CMakeLists.txt
檔案的一部分包含,以避免在建置樹中產生意外的副作用,並且可以使用此變數有條件地執行此類程式碼。例如,考慮 CTest
模組,它會建立目標和選項
project(MyProject)
...
if(PROJECT_IS_TOP_LEVEL)
include(CTest)
endif()
該變數的值在以下情況下為真:
專案的最上層目錄
由
ExternalProject
新增的外部專案的最上層目錄由
add_subdirectory()
新增,且不包含project()
呼叫的目錄由
FetchContent_MakeAvailable()
新增,如果提取的內容不包含project()
呼叫
該變數的值在以下情況下為假:
由
add_subdirectory()
新增,且包含project()
呼叫的目錄由
FetchContent_MakeAvailable()
新增,如果提取的內容包含project()
呼叫