Spec-Zone.ru › CMake 3.29

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

Spec-Zone.ru

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