Spec-Zone.ru › CMake 3.26

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, и для ассемблера тоже.

Переменные, установленные через параметры 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

Spec-Zone.ru

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