diff options
author | Stephen Kelly <steveire@gmail.com> | 2013-10-13 12:25:08 (GMT) |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2014-04-07 16:11:18 (GMT) |
commit | 8ed59fc207fd028d5b2b1f8cb8a323291ef04ffc (patch) | |
tree | 6d5257aac8000c17b6338fef90ff1b59e34d6ea9 /Help | |
parent | 4e6ca504459640ff39eac48eb62fcae95c8fc8d2 (diff) | |
download | CMake-8ed59fc207fd028d5b2b1f8cb8a323291ef04ffc.zip CMake-8ed59fc207fd028d5b2b1f8cb8a323291ef04ffc.tar.gz CMake-8ed59fc207fd028d5b2b1f8cb8a323291ef04ffc.tar.bz2 |
Add target_compile_features command.
This can be used to set the compiler features required by particular
targets. An error is issued at CMake time if the compiler does not
support the required feature. If a language dialect flag is required
by the features used, that will be added automatically.
Base the target_compile_features command on cmTargetPropCommandBase. This
gives us 'free' handling of IMPORTED, ALIAS, INTERFACE, non-compilable
and missing targets.
Diffstat (limited to 'Help')
-rw-r--r-- | Help/command/target_compile_features.rst | 30 | ||||
-rw-r--r-- | Help/manual/cmake-commands.7.rst | 1 | ||||
-rw-r--r-- | Help/release/dev/compile-language-features.rst | 4 | ||||
-rw-r--r-- | Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst | 3 |
4 files changed, 38 insertions, 0 deletions
diff --git a/Help/command/target_compile_features.rst b/Help/command/target_compile_features.rst new file mode 100644 index 0000000..f8e5c54 --- /dev/null +++ b/Help/command/target_compile_features.rst @@ -0,0 +1,30 @@ +target_compile_features +----------------------- + +Add expected compiler features to a target. + +:: + + target_compile_features(<target> <PRIVATE|PUBLIC|INTERFACE> <feature> [...]) + +Specify compiler features required when compiling a given target. If the +feature is not listed in the :variable:`CMAKE_CXX_COMPILE_FEATURES` variable, +then an error will be reported by CMake. If the use of the feature requires +an additional compiler flag, such as ``-std=c++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. + +The named ``<target>`` must have been created by a command such as +:command:`add_executable` or :command:`add_library` and must not be +an ``IMPORTED`` target. + +Arguments to ``target_compile_features`` may use "generator expressions" +with the syntax ``$<...>``. +See the :manual:`cmake-generator-expressions(7)` manual for available +expressions. diff --git a/Help/manual/cmake-commands.7.rst b/Help/manual/cmake-commands.7.rst index 4b1dbed..17c3236 100644 --- a/Help/manual/cmake-commands.7.rst +++ b/Help/manual/cmake-commands.7.rst @@ -91,6 +91,7 @@ These commands may be used freely in CMake projects. /command/source_group /command/string /command/target_compile_definitions + /command/target_compile_features /command/target_compile_options /command/target_include_directories /command/target_link_libraries diff --git a/Help/release/dev/compile-language-features.rst b/Help/release/dev/compile-language-features.rst index 74fe209..3c5d7ca 100644 --- a/Help/release/dev/compile-language-features.rst +++ b/Help/release/dev/compile-language-features.rst @@ -12,3 +12,7 @@ target-language-features information to ensure that the compiler in use is capable of building the target, and to add any necessary compile flags to support language features. + +* New :command:`target_compile_features` command allows populating the + :prop_tgt:`COMPILE_FEATURES` target property, just like any other + build variable. diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst index d49bb68..3278b2e 100644 --- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst +++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst @@ -7,6 +7,9 @@ The features listed in this variable may be known to be available to the C++ compiler. If the feature is available with the C++ compiler, it will be listed in the :variable:`CMAKE_CXX_COMPILE_FEATURES` variable. +The features listed here may be used with the :command:`target_compile_features` +command. + The features known to this version of CMake are: ``cxx_auto_type`` |