Spec-Zone.ru › CMake

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.

Булево значение, указывающее, является ли проект главным.

Дополнительные переменные устанавливаются с помощью необязательных аргументов, описанных в разделе Параметры ниже. Если параметр не указан, соответствующая переменная устанавливается в пустую строку.

Обратите внимание, что переменные вида <name>_SOURCE_DIR и <name>_BINARY_DIR также могут быть установлены другими командами до вызова project() (см. команду FetchContent_MakeAvailable() в качестве примера). Проекты не должны полагаться на то, что <PROJECT-NAME>_SOURCE_DIR или <PROJECT-NAME>_BINARY_DIR сохраняют определённое значение вне области действия вызова project() или одной из её дочерних областей.

Изменено в версии 3.30: <PROJECT-NAME>_SOURCE_DIR, <PROJECT-NAME>_BINARY_DIR, и <PROJECT-NAME>_IS_TOP_LEVEL, если они уже были установлены как обычные переменные во время вызова project(<PROJECT-NAME> ...), обновляются этим вызовом. Записи кэша с такими же именами всегда устанавливаются как и раньше. Подробности см. в примечаниях к выпуску 3.30.3, 3.30.4 и 3.30.5.

Изменено в версии 3.31: <PROJECT-NAME>_SOURCE_DIR, <PROJECT-NAME>_BINARY_DIR, и <PROJECT-NAME>_IS_TOP_LEVEL всегда устанавливаются как обычные переменные с помощью project(<PROJECT-NAME> ...). См. политику CMP0180. Записи кэша с такими же именами всегда устанавливаются как и раньше.

Параметры

Параметры:

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/latest/command/project.html

Spec-Zone.ru

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