设置项目的名称。
概要
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 >[。<小>(。> <补丁(。< tweak >]]],设置变量
(1)PROJECT_VERSION, <PROJECT-NAME> _VERSION
(2)PROJECT_VERSION_MAJOR, <PROJECT-NAME> _VERSION_MAJOR
(3)PROJECT_VERSION_MINOR, <PROJECT-NAME> _VERSION_MINOR
(4)PROJECT_VERSION_PATCH, <PROJECT-NAME> _VERSION_PATCH
(5)PROJECT_VERSION_TWEAK, <PROJECT-NAME> _VERSION_TWEAK。
3.12新版功能:当从顶级CMakeLists.txt调用project()命令时,版本也会存储在变量CMAKE_PROJECT_VERSION中
- DESCRIPTION < project-description-string >
3.9新版功能。
可选的。设置变量
PROJECT_DESCRIPTION, <PROJECT-NAME> _DESCRIPTION到< project-description-string >。建议这个描述是一个相对较短的字符串,通常不超过几个单词。
当从顶级CMakeLists.txt调用project()命令时,描述也存储在变量CMAKE_PROJECT_DESCRIPTION中。
3.12新版功能:添加了< PROJECT-NAME>_DESCRIPTION变量。
- HOMEPAGE_URL <url-string>
3.12新版功能。
可选的。设置变量PROJECT_HOMEPAGE_URL, <PROJECT-NAME> _HOMEPAGE_URL
到< URL -string >,它应该是项目的规范home URL。
当从顶级CMakeLists.txt调用project()命令时,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选项设置的变量用于包元数据和文档中的默认值。
注意
项目的顶级CMakeLists.txt文件必须包含一个直接调用project()命令的文字;通过include()命令加载是不够的。
如果不存在这样的调用,CMake将发出一个警告,并假装在顶部有一个项目(project)来启用默认语言(C和CXX)。
在CMakeLists.txt的顶部附近调用project()命令,但是在调用cmake_minimum_required()之后。在调用其他可能影响其行为的命令之前,建立版本和策略设置是很重要的。请参见策略CMP0000。
例子
有时候一个项目中可能即使用C语言,又要使用C++语言编程,这种情况下我们只需要使用【project】指定编程语言即可。
示例:
if (CMAKE_VERSION VERSION_LESS 3.0)
project(srs CXX C)
else()
cmake_policy(SET CMP0048 NEW)
project(srs VERSION 4.0.0 LANGUAGES CXX C)
endif()