You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.3 KiB
40 lines
1.3 KiB
PROJECT_IS_TOP_LEVEL
|
|
--------------------
|
|
|
|
.. versionadded:: 3.21
|
|
|
|
A boolean variable indicating whether the most recently called
|
|
:command:`project` command in the current scope or above was in the top
|
|
level ``CMakeLists.txt`` file.
|
|
|
|
Some modules should only be included as part of the top level
|
|
``CMakeLists.txt`` file to not cause unintended side effects in the build
|
|
tree, and this variable can be used to conditionally execute such code. For
|
|
example, consider the :module:`CTest` module, which creates targets and
|
|
options:
|
|
|
|
.. code-block:: cmake
|
|
|
|
project(MyProject)
|
|
...
|
|
if(PROJECT_IS_TOP_LEVEL)
|
|
include(CTest)
|
|
endif()
|
|
|
|
The variable value will be true in:
|
|
|
|
* the top-level directory of the project
|
|
* the top-level directory of an external project added by
|
|
:module:`ExternalProject`
|
|
* a directory added by :command:`add_subdirectory` that does not also contain
|
|
a :command:`project` call
|
|
* a directory added by :command:`FetchContent_MakeAvailable`,
|
|
if the fetched content does not contain a :command:`project` call
|
|
|
|
The variable value will be false in:
|
|
|
|
* a directory added by :command:`add_subdirectory` that also contains
|
|
a :command:`project` call
|
|
* a directory added by :command:`FetchContent_MakeAvailable`,
|
|
if the fetched content contains a :command:`project` call
|