mirror of
https://github.com/Kitware/CMake.git
synced 2026-08-11 17:44:44 +00:00
Try to be a bit more consistent about: - Placing angle brackets around text which serves as a placeholder rather than being literal. - Using curly brackets rather than angle brackets to denote groups where one of the options is required. - Describing optional list arguments like `<x>...` rather than `[<x>...]`. (Instances of lists not associated with keywords are intentionally left as-is, however.) Also, teach our CMake lexer to understand curly braces used as above (prior uses were only in parsed literals without syntax highlighting), and to highlight them (and remaining uses of angle braces) as the type Punctuation rather than the type Operator, for consistency with square braces.
52 lines
1.9 KiB
ReStructuredText
52 lines
1.9 KiB
ReStructuredText
target_compile_features
|
|
-----------------------
|
|
|
|
.. versionadded:: 3.1
|
|
|
|
Add expected compiler features to a target.
|
|
|
|
.. code-block:: cmake
|
|
|
|
target_compile_features(<target>
|
|
{INTERFACE|PUBLIC|PRIVATE} <feature>...
|
|
[{INTERFACE|PUBLIC|PRIVATE} <feature>...]...)
|
|
|
|
Specifies compiler features required when compiling a given target. If the
|
|
feature is not listed in the :variable:`CMAKE_C_COMPILE_FEATURES`,
|
|
:variable:`CMAKE_CUDA_COMPILE_FEATURES`, or :variable:`CMAKE_CXX_COMPILE_FEATURES`
|
|
variables, then an error will be reported by CMake. If the use of the feature requires
|
|
an additional compiler flag, such as ``-std=gnu++11``, the flag will be added
|
|
automatically.
|
|
|
|
The ``INTERFACE``, ``PUBLIC`` and ``PRIVATE`` keywords are required to
|
|
specify the scope of the features. ``PRIVATE`` and ``PUBLIC`` items will
|
|
populate the :prop_tgt:`COMPILE_FEATURES` property of ``<target>``.
|
|
``PUBLIC`` and ``INTERFACE`` items will populate the
|
|
:prop_tgt:`INTERFACE_COMPILE_FEATURES` property of ``<target>``.
|
|
Repeated calls for the same ``<target>`` append items.
|
|
|
|
.. versionadded:: 3.11
|
|
Allow setting ``INTERFACE`` items on :ref:`IMPORTED targets <Imported Targets>`.
|
|
|
|
The named ``<target>`` must have been created by a command such as
|
|
:command:`add_executable` or :command:`add_library` and must not be an
|
|
:ref:`ALIAS target <Alias Targets>`.
|
|
|
|
.. |command_name| replace:: ``target_compile_features``
|
|
.. |more_see_also| replace:: See the :manual:`cmake-compile-features(7)`
|
|
manual for information on compile features and a list of supported compilers.
|
|
.. include:: include/GENEX_NOTE.rst
|
|
:start-line: 2
|
|
|
|
See Also
|
|
^^^^^^^^
|
|
|
|
* :command:`target_compile_definitions`
|
|
* :command:`target_compile_options`
|
|
* :command:`target_include_directories`
|
|
* :command:`target_link_libraries`
|
|
* :command:`target_link_directories`
|
|
* :command:`target_link_options`
|
|
* :command:`target_precompile_headers`
|
|
* :command:`target_sources`
|