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, и для ассемблера тоже.
Переменные, установленные через параметры 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задан, он читается как минимум один раз. Он может быть прочитан несколько раз и снова при включении языков позже (см. ниже). - Установите переменные, описывающие целевые и хостовые платформы. Языковые переменные могут быть или не быть установлены на этом этапе. При первом запуске единственными языковыми переменными, которые могут быть определены, являются те, которые были установлены файлом toolchain. При последующих запусках могут быть установлены языковые переменные, сохраненные из предыдущего запуска.
-
Новое в версии 3.24: Включите каждый файл, указанный в
CMAKE_PROJECT_TOP_LEVEL_INCLUDES, если он задан. Переменная игнорируется CMake после этого.
- Если
- Включите любые указанные в вызове языки или языки по умолчанию, если они не были указаны. Файл toolchain может быть перечитан при первом включении языка.
-
Новое в версии 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–2023 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.26/command/project.html