project¶
Set the name of the project.
Synopsis¶
project(<PROJECT-NAME> [<language-name>...])
project(<PROJECT-NAME>
[VERSION <major>[.<minor>[.<patch>[.<tweak>]]]]
[DESCRIPTION <project-description-string>]
[HOMEPAGE_URL <url-string>]
[LANGUAGES <language-name>...])
Sets the name of the project, and stores it in the variable
PROJECT_NAME
. When called from the top-level
CMakeLists.txt
also stores the project name in the
variable CMAKE_PROJECT_NAME
.
Also sets the variables
Further variables are set by the optional arguments described in the following. If any of these arguments is not used, then the corresponding variables are set to the empty string.
Options¶
The options are:
VERSION <version>
Optional; may not be used unless policy
CMP0048
is set toNEW
.Takes a
<version>
argument composed of non-negative integer components, i.e.<major>[.<minor>[.<patch>[.<tweak>]]]
, and sets the variablesWhen the
project()
command is called from the top-levelCMakeLists.txt
, then the version is also stored in the variableCMAKE_PROJECT_VERSION
.DESCRIPTION <project-description-string>
Optional. Sets the variables
to
<project-description-string>
. It is recommended that this description is a relatively short string, usually no more than a few words.When the
project()
command is called from the top-levelCMakeLists.txt
, then the description is also stored in the variableCMAKE_PROJECT_DESCRIPTION
.HOMEPAGE_URL <url-string>
Optional. Sets the variables
to
<url-string>
, which should be the canonical home URL for the project.When the
project()
command is called from the top-levelCMakeLists.txt
, then the URL also is stored in the variableCMAKE_PROJECT_HOMEPAGE_URL
.LANGUAGES <language-name>...
Optional. Can also be specified without
LANGUAGES
keyword per the first, short signature.Selects which programming languages are needed to build the project. Supported languages include
C
,CXX
(i.e. C++),CUDA
,OBJC
(i.e. Objective-C),OBJCXX
,Fortran
, andASM
. By defaultC
andCXX
are enabled if no language options are given. Specify languageNONE
, or use theLANGUAGES
keyword and list no languages, to skip enabling any languages.If enabling
ASM
, list it last so that CMake can check whether compilers for other languages likeC
work for assembly too.
The variables set through the VERSION
, DESCRIPTION
and HOMEPAGE_URL
options are intended for use as default values in package metadata and documentation.
Code Injection¶
If the CMAKE_PROJECT_INCLUDE_BEFORE
variable is set, the file
pointed to by that variable will be included as the first step of the
project()
command.
If the CMAKE_PROJECT_INCLUDE
or
CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE
variables are set, the files
they point to will be included as the last step of the project()
command.
If both are set, then CMAKE_PROJECT_INCLUDE
will be included before
CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE
.
Usage¶
The top-level CMakeLists.txt
file for a project must contain a
literal, direct call to the project()
command; loading one
through the include()
command is not sufficient. If no such
call exists, CMake will issue a warning and pretend there is a
project(Project)
at the top to enable the default languages
(C
and CXX
).
Note
Call the project()
command near the top of the top-level
CMakeLists.txt
, but after calling cmake_minimum_required()
.
It is important to establish version and policy settings before invoking
other commands whose behavior they may affect.
See also policy CMP0000
.