Przeglądaj źródła

Help: Document explicitly that 'cxx_std_##' features may not add a flag

This is commonly reported incorrectly as a bug, so call out this
behavior explicitly in the documentation.
Brad King 3 lat temu
rodzic
commit
fbda79f39d

+ 2 - 0
Help/manual/cmake-compile-features.7.rst

@@ -115,6 +115,8 @@ of at-least C++ 11 (or C++ 14, C++ 17, ...), adding flags such as
 ``-std=gnu++11`` if necessary.  This applies to sources within ``mylib``
 as well as any dependents (that may include headers from ``mylib``).
 
+.. include:: ../prop_gbl/CMAKE_LANG_STD_FLAGS.txt
+
 Availability of Compiler Extensions
 -----------------------------------
 

+ 2 - 0
Help/prop_gbl/CMAKE_CUDA_KNOWN_FEATURES.rst

@@ -35,3 +35,5 @@ The features known to this version of CMake are:
   .. versionadded:: 3.20
 
   Compiler mode is at least CUDA/C++ 23.
+
+.. include:: CMAKE_LANG_STD_FLAGS.txt

+ 2 - 0
Help/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.rst

@@ -46,6 +46,8 @@ but it does not necessarily imply complete conformance to that standard.
 
   Compiler mode is at least C++ 23.
 
+.. include:: CMAKE_LANG_STD_FLAGS.txt
+
 Low level individual compile features
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 

+ 2 - 0
Help/prop_gbl/CMAKE_C_KNOWN_FEATURES.rst

@@ -39,6 +39,8 @@ High level meta features indicating C standard support
 
   Compiler mode is at least C 23.
 
+.. include:: CMAKE_LANG_STD_FLAGS.txt
+
 Low level individual compile features
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 

+ 7 - 0
Help/prop_gbl/CMAKE_LANG_STD_FLAGS.txt

@@ -0,0 +1,7 @@
+.. note::
+
+  If the compiler's default standard level is at least that
+  of the requested feature, CMake may omit the ``-std=`` flag.
+  The flag may still be added if the compiler's default extensions mode
+  does not match the :prop_tgt:`<LANG>_EXTENSIONS` target property,
+  or if the :prop_tgt:`<LANG>_STANDARD` target property is set.