mirror of
https://github.com/Kitware/CMake.git
synced 2026-08-10 17:14:10 +00:00
Propagates variables set in enable_language() logic up variable scopes so that the language can be used by targets in the ancestor directories. Works through block() and function() scopes as well. The add_subdirectory() call can be thought of as the effective call site for enabling the language. The same holds for endblock() and the actual function call. Adds a policy CMP0220 to control this behavior. As the language is "enabled" at each ancestor scope, the policy is checked. If OLD, the language is not enabled at this scope and the ones above. Closes: #27881 #27508 #27389 Related: #26751 #27564
31 lines
1.0 KiB
ReStructuredText
31 lines
1.0 KiB
ReStructuredText
enable_language
|
|
---------------
|
|
|
|
Enable languages (CXX/C/OBJC/OBJCXX/Fortran/etc)
|
|
|
|
.. code-block:: cmake
|
|
|
|
enable_language(<lang>... [OPTIONAL])
|
|
|
|
Enables support for the named languages in CMake. This is the same as
|
|
the :command:`project` command but does not create any of the extra
|
|
variables that are created by the :command:`project` command.
|
|
|
|
.. include:: include/SUPPORTED_LANGUAGES.rst
|
|
|
|
The following restrictions apply to where ``enable_language()`` may be called:
|
|
|
|
* It must not be called before the first call to :command:`project`.
|
|
See policy :policy:`CMP0165`.
|
|
* It must be called such that the command executes before any targets that
|
|
use the language directly for compiling sources or indirectly through link
|
|
dependencies.
|
|
|
|
.. note::
|
|
Further restrictions apply if policy :policy:`CMP0220` is not set
|
|
to ``NEW``. See the policy documentation for details.
|
|
|
|
The ``OPTIONAL`` keyword is a placeholder for future implementation and
|
|
does not currently work. Instead you can use the :module:`CheckLanguage`
|
|
module to verify support before enabling.
|