project
Установите имя проекта.
Краткое описание
project(<PROJECT-NAME> [<language-name>...])
project(<PROJECT-NAME>
[VERSION <major>[.<minor>[.<patch>[.<tweak>]]]]
[DESCRIPTION <project-description-string>]
[HOMEPAGE_URL <url-string>]
[LANGUAGES <language-name>...])
Устанавливает имя проекта и сохраняет его в переменной PROJECT_NAME. При вызове из верхнего уровня CMakeLists.txt также сохраняет имя проекта в переменной CMAKE_PROJECT_NAME.
Также устанавливаются следующие переменные:
-
PROJECT_SOURCE_DIR,<PROJECT-NAME>_SOURCE_DIR -
Абсолютный путь к каталогу исходных файлов проекта.
-
PROJECT_BINARY_DIR,<PROJECT-NAME>_BINARY_DIR -
Абсолютный путь к каталогу двоичных файлов проекта.
-
PROJECT_IS_TOP_LEVEL,<PROJECT-NAME>_IS_TOP_LEVEL -
Новая в версии 3.21.
Булево значение, указывающее, является ли проект главным.
Дополнительные переменные устанавливаются с помощью необязательных аргументов, описанных ниже. Если какой-либо из этих аргументов не используется, соответствующие переменные устанавливаются в пустую строку.
Параметры
Параметры:
-
VERSION <version> -
Необязательно; может не использоваться, если политика
CMP0048установлена вNEW.Принимает
<version>аргумент, состоящий из целых неотрицательных компонент, т.е.<major>[.<minor>[.<patch>[.<tweak>]]], и устанавливает переменные-
PROJECT_VERSION,<PROJECT-NAME>_VERSION -
PROJECT_VERSION_MAJOR,<PROJECT-NAME>_VERSION_MAJOR -
PROJECT_VERSION_MINOR,<PROJECT-NAME>_VERSION_MINOR -
PROJECT_VERSION_PATCH,<PROJECT-NAME>_VERSION_PATCH -
PROJECT_VERSION_TWEAK,<PROJECT-NAME>_VERSION_TWEAK.
Новая в версии 3.12: При вызове команды
project()из верхнего уровняCMakeLists.txt, версия также сохраняется в переменнойCMAKE_PROJECT_VERSION. -
-
DESCRIPTION <project-description-string> -
Новая в версии 3.9.
Необязательно. Устанавливает переменные
в
<project-description-string>. Рекомендуется, чтобы это описание было относительно коротким, обычно не более нескольких слов.При вызове команды
project()из верхнего уровняCMakeLists.txt, описание также сохраняется в переменнойCMAKE_PROJECT_DESCRIPTION.Новая в версии 3.12: Добавлена переменная
<PROJECT-NAME>_DESCRIPTION. -
HOMEPAGE_URL <url-string> -
Новая в версии 3.12.
Необязательно. Устанавливает переменные
в
<url-string>, что должно быть каноническим URL-адресом домашней страницы проекта.При вызове команды
project()из верхнего уровняCMakeLists.txt, URL также сохраняется в переменнойCMAKE_PROJECT_HOMEPAGE_URL. -
LANGUAGES <language-name>... -
Необязательно. Также может быть указан без ключевого слова
LANGUAGESв соответствии с первым, коротким определением.Выбирает необходимые языки программирования для построения проекта. Поддерживаемые языки включают
C,CXX(т.е. C++),CUDA,OBJC(т.е. Objective-C),OBJCXX,Fortran,HIP,ISPC, иASM. По умолчаниюCиCXXвключены, если не указаны языковые параметры. Укажите языкNONE, или используйте ключевое словоLANGUAGESи не указывайте языки, чтобы отменить включение каких-либо языков.Новая в версии 3.8: Добавлена поддержка
CUDA.Новая в версии 3.16: Добавлена поддержка
OBJCиOBJCXX.Новая в версии 3.18: Добавлена поддержка
ISPC.Если вы включаете
ASM, укажите его последним, чтобы CMake мог проверить, работают ли компиляторы других языков, таких какC, и для ассемблера тоже.
Переменные, установленные через параметры VERSION, DESCRIPTION и HOMEPAGE_URL, предназначены для использования в качестве значений по умолчанию в метаданных и документации пакетов.
Вставка кода
Если переменные CMAKE_PROJECT_INCLUDE_BEFORE или CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE установлены, файлы, на которые они ссылаются, будут включены как первый шаг команды project(). Если оба установлены, то CMAKE_PROJECT_INCLUDE_BEFORE будет включено перед CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE.
Если переменные CMAKE_PROJECT_INCLUDE или CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE установлены, файлы, на которые они ссылаются, будут включены как последний шаг команды project(). Если оба установлены, то CMAKE_PROJECT_INCLUDE будет включено перед CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE.
Новая в версии 3.15: Добавлены переменные CMAKE_PROJECT_INCLUDE и CMAKE_PROJECT_INCLUDE_BEFORE.
Новая в версии 3.17: Добавлена переменная CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE.
Использование
Файл верхнего уровня CMakeLists.txt для проекта должен содержать буквальный, прямой вызов команды project(); загрузка его через команду include() недостаточно. Если такого вызова нет, CMake выведет предупреждение и предположит существование project(Project) вверху, чтобы включить языки по умолчанию (C и CXX).
Примечание
Вызовите команду project() в начале верхнего уровня CMakeLists.txt, но после вызова cmake_minimum_required(). Важно установить параметры версии и политики перед вызовом других команд, поведение которых они могут повлиять. См. также политику CMP0000.
© 2000–2022 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.23/command/project.html