Spec-Zone.ru › CMake 3.28

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++), 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

Spec-Zone.ru

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