| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 | 
							- project
 
- -------
 
- Set the name of the project.
 
- Synopsis
 
- ^^^^^^^^
 
- .. code-block:: cmake
 
-  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
 
- :variable:`PROJECT_NAME`. When called from the top-level
 
- ``CMakeLists.txt`` also stores the project name in the
 
- variable :variable:`CMAKE_PROJECT_NAME`.
 
- Also sets the variables:
 
- :variable:`PROJECT_SOURCE_DIR`, :variable:`<PROJECT-NAME>_SOURCE_DIR`
 
-   Absolute path to the source directory for the project.
 
- :variable:`PROJECT_BINARY_DIR`, :variable:`<PROJECT-NAME>_BINARY_DIR`
 
-   Absolute path to the binary directory for the project.
 
- :variable:`PROJECT_IS_TOP_LEVEL`, :variable:`<PROJECT-NAME>_IS_TOP_LEVEL`
 
-   .. versionadded:: 3.21
 
-   Boolean value indicating whether the project is top-level.
 
- 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 :policy:`CMP0048` is
 
-   set to ``NEW``.
 
-   Takes a ``<version>`` argument composed of non-negative integer components,
 
-   i.e. ``<major>[.<minor>[.<patch>[.<tweak>]]]``,
 
-   and sets the variables
 
-   * :variable:`PROJECT_VERSION`,
 
-     :variable:`<PROJECT-NAME>_VERSION`
 
-   * :variable:`PROJECT_VERSION_MAJOR`,
 
-     :variable:`<PROJECT-NAME>_VERSION_MAJOR`
 
-   * :variable:`PROJECT_VERSION_MINOR`,
 
-     :variable:`<PROJECT-NAME>_VERSION_MINOR`
 
-   * :variable:`PROJECT_VERSION_PATCH`,
 
-     :variable:`<PROJECT-NAME>_VERSION_PATCH`
 
-   * :variable:`PROJECT_VERSION_TWEAK`,
 
-     :variable:`<PROJECT-NAME>_VERSION_TWEAK`.
 
-   .. versionadded:: 3.12
 
-     When the ``project()`` command is called from the top-level
 
-     ``CMakeLists.txt``, then the version is also stored in the variable
 
-     :variable:`CMAKE_PROJECT_VERSION`.
 
- ``DESCRIPTION <project-description-string>``
 
-   .. versionadded:: 3.9
 
-   Optional.
 
-   Sets the variables
 
-   * :variable:`PROJECT_DESCRIPTION`, :variable:`<PROJECT-NAME>_DESCRIPTION`
 
-   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-level ``CMakeLists.txt``,
 
-   then the description is also stored in the variable :variable:`CMAKE_PROJECT_DESCRIPTION`.
 
-   .. versionadded:: 3.12
 
-     Added the ``<PROJECT-NAME>_DESCRIPTION`` variable.
 
- ``HOMEPAGE_URL <url-string>``
 
-   .. versionadded:: 3.12
 
-   Optional.
 
-   Sets the variables
 
-   * :variable:`PROJECT_HOMEPAGE_URL`, :variable:`<PROJECT-NAME>_HOMEPAGE_URL`
 
-   to ``<url-string>``, which should be the canonical home URL for the project.
 
-   When the ``project()`` command is called from the top-level ``CMakeLists.txt``,
 
-   then the URL also is stored in the variable :variable:`CMAKE_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``, ``HIP``, ``ISPC``, 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.
 
-   .. versionadded:: 3.8
 
-     Added ``CUDA`` support.
 
-   .. versionadded:: 3.16
 
-     Added ``OBJC`` and ``OBJCXX`` support.
 
-   .. versionadded:: 3.18
 
-     Added ``ISPC`` support.
 
-   If enabling ``ASM``, list it last so that CMake can check whether
 
-   compilers for other languages like ``C`` 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 :variable:`CMAKE_PROJECT_INCLUDE_BEFORE` or
 
- :variable:`CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE` variables are set,
 
- the files they point to will be included as the first step of the
 
- ``project()`` command.
 
- If both are set, then :variable:`CMAKE_PROJECT_INCLUDE_BEFORE` will be
 
- included before :variable:`CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE`.
 
- If the :variable:`CMAKE_PROJECT_INCLUDE` or
 
- :variable:`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 :variable:`CMAKE_PROJECT_INCLUDE` will be included before
 
- :variable:`CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE`.
 
- .. versionadded:: 3.15
 
-   Added the ``CMAKE_PROJECT_INCLUDE`` and ``CMAKE_PROJECT_INCLUDE_BEFORE``
 
-   variables.
 
- .. versionadded:: 3.17
 
-   Added the ``CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE`` variable.
 
- Usage
 
- ^^^^^
 
- The top-level ``CMakeLists.txt`` file for a project must contain a
 
- literal, direct call to the ``project()`` command; loading one
 
- through the :command:`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 :command:`cmake_minimum_required`.
 
-   It is important to establish version and policy settings before invoking
 
-   other commands whose behavior they may affect.
 
-   See also policy :policy:`CMP0000`.
 
 
  |