Spec-Zone.ru › CMake 3.24

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, <PROJECT-NAME>_DESCRIPTION

в <project-description-string>. Рекомендуется, чтобы это описание было относительно коротким, обычно не более нескольких слов.

Когда команда project() вызывается с верхнего уровня CMakeLists.txt, описание также сохраняется в переменной CMAKE_PROJECT_DESCRIPTION.

Новое в версии 3.12: Добавлена переменная <PROJECT-NAME>_DESCRIPTION.

HOMEPAGE_URL <url-string>

Новое в версии 3.12.

Необязательно. Устанавливает переменные

  • PROJECT_HOMEPAGE_URL, <PROJECT-NAME>_HOMEPAGE_URL

в <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, предназначены для использования в качестве значений по умолчанию в метаданных и документации пакетов.

Вставка кода

Пользователь может определить ряд переменных, чтобы указать файлы для включения в разные моменты выполнения команды 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(). Важно установить настройки версии и политики перед вызовом других команд, поведение которых они могут повлиять. См. также политику CMP0000.

© 2000–2022 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.24/command/project.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API