projectΒΆ
Sets project details such as name, version, etc. and enables languages.
project(<PROJECT-NAME> [LANGUAGES] [<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 the name in the
PROJECT_NAME
variable. Additionally this sets variables
If VERSION
is specified, given components must be non-negative integers.
If VERSION
is not specified, the default version is the empty string.
The VERSION
option may not be used unless policy CMP0048
is
set to NEW
.
The project()
command stores the version number and its components
in variables
Variables corresponding to unspecified versions are set to the empty string
(if policy CMP0048
is set to NEW
).
If the optional DESCRIPTION
is given, then PROJECT_DESCRIPTION
and <PROJECT-NAME>_DESCRIPTION
will be set to its argument.
These variables will be cleared if DESCRIPTION
is not given.
The description is expected to be a relatively short string, usually no more
than a few words.
The optional HOMEPAGE_URL
sets the analogous variables
PROJECT_HOMEPAGE_URL
and <PROJECT-NAME>_HOMEPAGE_URL
.
When this option is given, the URL provided should be the canonical home for
the project.
These variables will be cleared if HOMEPAGE_URL
is not given.
Note that the description and homepage URL may be used as defaults for things like packaging meta-data, documentation, etc.
Optionally you can specify which languages your project supports.
Example languages include C
, CXX
(i.e. C++), CUDA
,
Fortran
, and ASM
.
By default C
and CXX
are enabled if no language options are
given. Specify language NONE
, or use the LANGUAGES
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 like C
work for assembly too.
If a variable exists called CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE
,
the file pointed to by that variable will be included as the last step of the
project command.
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 implicitly add one to the top that enables the
default languages (C
and CXX
). The name of the project set in
the top level CMakeLists.txt
file is available from the
CMAKE_PROJECT_NAME
variable, its description from
CMAKE_PROJECT_DESCRIPTION
, its homepage URL from
CMAKE_PROJECT_HOMEPAGE_URL
and its version from
CMAKE_PROJECT_VERSION
.
Note
Call the cmake_minimum_required()
command at the beginning
of the top-level CMakeLists.txt
file even before calling the
project()
command. It is important to establish version and
policy settings before invoking other commands whose behavior they
may affect. See also policy CMP0000
.