# CMAKE_PROJECT_TOP_LEVEL_INCLUDES

Added in version 3.24.

Semicolon-separated list of CMake language files to include as part of the very first `project()` call. The files will be included immediately after the toolchain file has been read (if one is specified) and platform variables have been set, but before any languages have been enabled. Therefore, language-specific variables, including things like `CMAKE_<LANG>_COMPILER`, might not be set. See Code Injection for a more detailed discussion of files potentially included during a `project()` call.

Added in version 3.29: This variable can also now refer to module names to be found in `CMAKE_MODULE_PATH` or builtin to CMake.

This variable is intended for specifying files that perform one-time setup for the build. It provides an injection point for things like configuring package managers, adding logic the user shares between projects (e.g. defining their own custom build types), and so on. It is primarily for users to add things specific to their environment, but not for specifying the toolchain details (use `CMAKE_TOOLCHAIN_FILE` for that).

By default, this variable is empty. It is intended to be set by the user.

See also:

- `CMAKE_PROJECT_INCLUDE`

- `CMAKE_PROJECT_INCLUDE_BEFORE`

- `CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE`

- `CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE`

- `PROPAGATE_TOP_LEVEL_INCLUDES_TO_TRY_COMPILE`