mirror of
https://github.com/Kitware/CMake.git
synced 2026-08-10 17:14:10 +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.
75 lines
2.7 KiB
ReStructuredText
75 lines
2.7 KiB
ReStructuredText
target_compile_options
|
|
----------------------
|
|
|
|
Add compile options to a target.
|
|
|
|
.. code-block:: cmake
|
|
|
|
target_compile_options(<target> [BEFORE]
|
|
{INTERFACE|PUBLIC|PRIVATE} <item>...
|
|
[{INTERFACE|PUBLIC|PRIVATE} <item>...]...)
|
|
|
|
Adds options to the :prop_tgt:`COMPILE_OPTIONS` or
|
|
:prop_tgt:`INTERFACE_COMPILE_OPTIONS` target properties. These options
|
|
are used when compiling the given ``<target>``, which 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>`.
|
|
|
|
.. note::
|
|
|
|
These options are not used when linking the target.
|
|
See the :command:`target_link_options` command for that.
|
|
|
|
Arguments
|
|
^^^^^^^^^
|
|
|
|
If ``BEFORE`` is specified, the content will be prepended to the property
|
|
instead of being appended. See policy :policy:`CMP0101` which affects
|
|
whether ``BEFORE`` will be ignored in certain cases.
|
|
|
|
The ``INTERFACE``, ``PUBLIC`` and ``PRIVATE`` keywords are required to
|
|
specify the :ref:`scope <Target Command Scope>` of the following arguments.
|
|
``PRIVATE`` and ``PUBLIC`` items will populate the :prop_tgt:`COMPILE_OPTIONS`
|
|
property of ``<target>``. ``PUBLIC`` and ``INTERFACE`` items will populate the
|
|
:prop_tgt:`INTERFACE_COMPILE_OPTIONS` property of ``<target>``.
|
|
The following arguments specify compile options. Repeated calls for the same
|
|
``<target>`` append items in the order called.
|
|
|
|
.. versionadded:: 3.11
|
|
Allow setting ``INTERFACE`` items on :ref:`IMPORTED targets <Imported Targets>`.
|
|
|
|
.. |command_name| replace:: ``target_compile_options``
|
|
.. include:: include/GENEX_NOTE.rst
|
|
|
|
.. include:: include/OPTIONS_SHELL.rst
|
|
|
|
See Also
|
|
^^^^^^^^
|
|
|
|
* This command can be used to add any options. However, for adding
|
|
preprocessor definitions and include directories it is recommended
|
|
to use the more specific commands :command:`target_compile_definitions`
|
|
and :command:`target_include_directories`.
|
|
|
|
* For directory-wide settings, there is the command :command:`add_compile_options`.
|
|
|
|
* For file-specific settings, there is the source file property :prop_sf:`COMPILE_OPTIONS`.
|
|
|
|
* This command adds compile options for all languages in a target.
|
|
Use the :genex:`COMPILE_LANGUAGE` generator expression to specify
|
|
per-language compile options.
|
|
|
|
* :command:`target_compile_features`
|
|
* :command:`target_link_libraries`
|
|
* :command:`target_link_directories`
|
|
* :command:`target_link_options`
|
|
* :command:`target_precompile_headers`
|
|
* :command:`target_sources`
|
|
|
|
* :variable:`CMAKE_<LANG>_FLAGS` and :variable:`CMAKE_<LANG>_FLAGS_<CONFIG>`
|
|
add language-wide flags passed to all invocations of the compiler.
|
|
This includes invocations that drive compiling and those that drive linking.
|
|
|
|
* The :module:`CheckCompilerFlag` module to check whether the compiler
|
|
supports a given flag.
|