diff options
Diffstat (limited to 'Help/manual/cmake-compile-features.7.rst')
-rw-r--r-- | Help/manual/cmake-compile-features.7.rst | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/Help/manual/cmake-compile-features.7.rst b/Help/manual/cmake-compile-features.7.rst index d4bbecc..8e3dbb8 100644 --- a/Help/manual/cmake-compile-features.7.rst +++ b/Help/manual/cmake-compile-features.7.rst @@ -166,11 +166,11 @@ symbol, and compiler support determines what it is expanded to: virtual void Execute() = 0; }; - struct Concrete Foo_CXX_FINAL { - void Execute() Foo_CXX_OVERRIDE; + struct Concrete Foo_FINAL { + void Execute() Foo_OVERRIDE; }; -In this case, ``Foo_CXX_FINAL`` will expand to ``final`` if the +In this case, ``Foo_FINAL`` will expand to ``final`` if the compiler supports the keyword, or to empty otherwise. In this use-case, the CMake code will wish to enable a particular language @@ -189,13 +189,13 @@ set to influence all following targets: cxx_final cxx_override ) - # Includes foo_compiler_detection.h and uses the Foo_DECL_CXX_FINAL symbol + # Includes foo_compiler_detection.h and uses the Foo_FINAL symbol # which will expand to 'final' if the compiler supports the requested # CXX_STANDARD. add_library(foo foo.cpp) set_property(TARGET foo PROPERTY CXX_STANDARD 11) - # Includes foo_compiler_detection.h and uses the Foo_DECL_CXX_FINAL symbol + # Includes foo_compiler_detection.h and uses the Foo_FINAL symbol # which will expand to 'final' if the compiler supports the feature, # even though CXX_STANDARD is not set explicitly. The requirement of # cxx_constexpr causes CMake to set CXX_STANDARD internally, which @@ -276,10 +276,13 @@ properties: .. code-block:: cmake add_library(foo INTERFACE) + set(with_variadics ${CMAKE_CURRENT_SOURCE_DIR}/with_variadics) + set(no_variadics ${CMAKE_CURRENT_SOURCE_DIR}/no_variadics) target_link_libraries(foo INTERFACE - "$<$<COMPILE_FEATURES:cxx_variadic_templates>:${CMAKE_CURRENT_SOURCE_DIR}/with_variadics>" - "$<$<NOT:$<COMPILE_FEATURES:cxx_variadic_templates>>:${CMAKE_CURRENT_SOURCE_DIR}/no_variadics>") + "$<$<COMPILE_FEATURES:cxx_variadic_templates>:${with_variadics}>" + "$<$<NOT:$<COMPILE_FEATURES:cxx_variadic_templates>>:${no_variadics}>" + ) Consuming code then simply links to the ``foo`` target as usual and uses the feature-appropriate include directory |