summaryrefslogtreecommitdiffstats
path: root/Help/command/target_compile_features.rst
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2013-10-13 12:25:08 (GMT)
committerStephen Kelly <steveire@gmail.com>2014-04-07 16:11:18 (GMT)
commit8ed59fc207fd028d5b2b1f8cb8a323291ef04ffc (patch)
tree6d5257aac8000c17b6338fef90ff1b59e34d6ea9 /Help/command/target_compile_features.rst
parent4e6ca504459640ff39eac48eb62fcae95c8fc8d2 (diff)
downloadCMake-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/command/target_compile_features.rst')
-rw-r--r--Help/command/target_compile_features.rst30
1 files changed, 30 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.