summaryrefslogtreecommitdiffstats
path: root/Help
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2014-03-28 15:09:35 (GMT)
committerStephen Kelly <steveire@gmail.com>2014-05-07 10:17:49 (GMT)
commit1df2116bfaa4c575404ae1eef225aed1530d668a (patch)
tree99a8fd5375d47f6359fd269c0d9e3ab030bc131e /Help
parentc4f4dac2d550f0a8a44530187eac2ad03191c981 (diff)
downloadCMake-1df2116bfaa4c575404ae1eef225aed1530d668a.zip
CMake-1df2116bfaa4c575404ae1eef225aed1530d668a.tar.gz
CMake-1df2116bfaa4c575404ae1eef225aed1530d668a.tar.bz2
Features: Decay language flag if requested is not available.
Use the highest standard compile flags available if requested language version is too new. This supports use-cases like set(CMAKE_CXX_STANDARD 14) # Compiled with -std=c++11 with GNU 4.7, which has no -std=c++14 # or equivalent flag add_executable(main main.cpp) This can be used in combination with preprocessor defines which communicate the availability of certain language features for optional use.
Diffstat (limited to 'Help')
-rw-r--r--Help/prop_tgt/CXX_STANDARD.rst16
1 files changed, 14 insertions, 2 deletions
diff --git a/Help/prop_tgt/CXX_STANDARD.rst b/Help/prop_tgt/CXX_STANDARD.rst
index e1b6e78..fb72f3e 100644
--- a/Help/prop_tgt/CXX_STANDARD.rst
+++ b/Help/prop_tgt/CXX_STANDARD.rst
@@ -1,14 +1,26 @@
CXX_STANDARD
------------
-The C++ standard whose features are required to build this target.
+The C++ standard whose features are requested to build this target.
-This property specifies the C++ standard whose features are required
+This property specifies the C++ standard whose features are requested
to build this target. For some compilers, this results in adding a
flag such as ``-std=c++11`` to the compile line.
Supported values are ``98`` and ``11``.
+If the value requested does not result in a compile flag being added for
+the compiler in use, a previous standard flag will be added instead. This
+means that using:
+
+.. code-block:: cmake
+
+ set_property(TARGET tgt PROPERTY CXX_STANDARD 11)
+
+with a compiler which does not support ``-std=c++11`` or an equivalent
+flag will not result in an error or warning, but will instead add the
+``-std=c++98`` flag if supported.
+
This property is initialized by the value of
the :variable:`CMAKE_CXX_STANDARD` variable if it is set when a target
is created.