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++), CSharp (т.е. C#), CUDA, OBJC (т.е. Objective-C), OBJCXX (т.е. Objective-C++), Fortran, HIP, ISPC, Swift, ASM, ASM_NASM, ASM_MARMASM, ASM_MASM, и ASM-ATT.
Введено в версии 3.8: Добавлена поддержка CSharp и CUDA.
Введено в версии 3.15: Добавлена поддержка Swift.
Введено в версии 3.16: Добавлена поддержка OBJC и OBJCXX.
Введено в версии 3.18: Добавлена поддержка ISPC.
Введено в версии 3.21: Добавлена поддержка HIP.
Введено в версии 3.26: Добавлена поддержка ASM_MARMASM.
Если включение ASM, перечислите его последним, чтобы CMake мог проверить, работают ли компиляторы для других языков, таких как C, и для ассемблера тоже.
По умолчанию C и CXX включены, если не указаны языковые параметры. Укажите язык NONE, или используйте ключевое слово LANGUAGES и не перечисляйте языки, чтобы не включать какие-либо языки.
Переменные, устанавливаемые с помощью параметров VERSION, DESCRIPTION и HOMEPAGE_URL, предназначены для использования в качестве значений по умолчанию в метаданных и документации пакетов.
Вставка кода
Несколько переменных могут быть определены пользователем для указания файлов, которые нужно включить в разные моменты выполнения команды project(). Следующее описывает шаги, выполняемые во время вызова project():
-
Новое в версии 3.15: Для каждого вызова
project()независимо от имени проекта, включите файл с именем, указанным вCMAKE_PROJECT_INCLUDE_BEFORE, если он задан. -
Новое в версии 3.17: Если команда
project()указывает<PROJECT-NAME>в качестве имени проекта, включите файл с именем, указанным вCMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE, если он задан. - Установите различные переменные, специфичные для проекта, подробно описанные в разделах Обзор и Параметры выше.
-
Только для первого вызова
project():- Если
CMAKE_TOOLCHAIN_FILEзадан, прочтите его хотя бы один раз. Он может быть прочитан несколько раз, а также повторно при включении языков позже (см. ниже). - Установите переменные, описывающие целевые и хостовые платформы. Языковые переменные могут быть или не быть установлены на данном этапе. При первом запуске единственными языкоспецифичными переменными, которые могут быть определены, являются те, которые могут быть установлены файлом инструментальной цепочки. При последующих запусках могут быть установлены языкоспецифичные переменные, кэшированные из предыдущего запуска.
-
Новое в версии 3.24: Включите каждый файл, указанный в
CMAKE_PROJECT_TOP_LEVEL_INCLUDES, если он задан. После этого переменная игнорируется CMake.
- Если
- Включите любые указанные в вызове языки или языки по умолчанию, если они не были предоставлены. Файл инструментальной цепочки может быть повторно прочитан при включении языка в первый раз.
-
Новое в версии 3.15: Для каждого вызова
project()независимо от имени проекта, включите файл с именем, указанным вCMAKE_PROJECT_INCLUDE, если он задан. - Если команда
project()указывает<PROJECT-NAME>в качестве имени проекта, включите файл с именем, указанным вCMAKE_PROJECT_<PROJECT-NAME>_INCLUDE, если он задан.
Использование
Файл верхнего уровня CMakeLists.txt для проекта должен содержать буквальный прямой вызов команды project(); загрузка через команду include() недостаточно. Если такого вызова нет, CMake выведет предупреждение и предположит наличие project(Project) в начале для включения языков по умолчанию (C и CXX).
Примечание
Вызовите команду project() в начале файла верхнего уровня CMakeLists.txt, но после вызова cmake_minimum_required(). Важно установить настройки версии и политики до вызова других команд, поведение которых они могут повлиять, и по этой причине команда project() выведет предупреждение, если этот порядок не соблюден. См. также политику CMP0000.
© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.28/command/project.html