Files
CMake/Help/command/enable_language.rst
Arha Gatram 86759dce81 enable_language: add support for usage in subdirectories
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
2026-08-07 11:05:57 -04:00

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.