Merge topic 'better_static_link_flags_docs'

6b17d85873 Help: Document when LINK_FLAGS and STATIC_LIBRARY_FLAGS are used
9561d42f95 target_link_options: Add test to verify static library behavior

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !2274
This commit is contained in:
Craig Scott 2018-08-15 11:58:26 +00:00 committed by Kitware Robot
commit a6f7a01f3a
10 changed files with 34 additions and 9 deletions

View File

@ -1,7 +1,7 @@
add_link_options
----------------
Adds options to the link of targets.
Adds options to the link of shared library, module and executable targets.
::

View File

@ -1,7 +1,8 @@
LINK_OPTIONS
------------
List of options to use for the link step.
List of options to use for the link step of shared library, module
and executable targets.
This property holds a :ref:`;-list <CMake Language Lists>` of options
given so far to the :command:`add_link_options` command.

View File

@ -1,7 +1,9 @@
LINK_FLAGS
----------
Additional flags to use when linking this target.
Additional flags to use when linking this target if it is a shared library,
module library, or an executable. Static libraries need to use
:prop_tgt:`STATIC_LIBRARY_FLAGS`.
The LINK_FLAGS property, managed as a string, can be used to add extra flags
to the link step of a target. :prop_tgt:`LINK_FLAGS_<CONFIG>` will add to the

View File

@ -1,9 +1,9 @@
LINK_FLAGS_<CONFIG>
-------------------
Per-configuration linker flags for a target.
Per-configuration linker flags for a shared library, module or executable target.
This is the configuration-specific version of LINK_FLAGS.
This is the configuration-specific version of :prop_tgt:`LINK_FLAGS`.
.. note::

View File

@ -1,6 +1,12 @@
STATIC_LIBRARY_FLAGS
--------------------
Extra flags to use when linking static libraries.
Archiver (or MSVC librarian) flags for a static library target.
Targets that are shared libraries, modules, or executables can use
the :prop_tgt:`LINK_OPTIONS` or :prop_tgt:`LINK_FLAGS` target property.
Extra flags to use when linking a static library.
The STATIC_LIBRARY_FLAGS property, managed as a string, can be used to add
extra flags to the link step of a static library target.
:prop_tgt:`STATIC_LIBRARY_FLAGS_<CONFIG>` will add to the configuration
``<CONFIG>``, for example, ``DEBUG``, ``RELEASE``, ``MINSIZEREL``,
``RELWITHDEBINFO``, ...

View File

@ -1,6 +1,6 @@
STATIC_LIBRARY_FLAGS_<CONFIG>
-----------------------------
Per-configuration flags for creating a static library.
Per-configuration archiver (or MSVC librarian) flags for a static library target.
This is the configuration-specific version of STATIC_LIBRARY_FLAGS.
This is the configuration-specific version of :prop_tgt:`STATIC_LIBRARY_FLAGS`.

View File

@ -0,0 +1,7 @@
if (actual_stdout MATCHES "BADFLAG_RELEASE")
set (RunCMake_TEST_FAILED "Found 'BADFLAG_RELEASE' which was not expected.")
endif()
if (actual_stdout MATCHES "SHELL:")
string (APPEND RunCMake_TEST_FAILED "\nFound unexpected prefix 'SHELL:'.")
endif()

View File

@ -22,6 +22,13 @@ add_executable(LinkOptions_consumer LinkOptionsExe.c)
target_link_libraries(LinkOptions_consumer PRIVATE LinkOptions_producer)
# static library with generator expression
add_library(LinkOptions_static STATIC LinkOptionsLib.c)
target_link_options(LinkOptions_static PRIVATE $<$<CONFIG:Release>:${pre}BADFLAG_RELEASE${obj}>
"SHELL:" # produces no options
)
# shared library with generator expression
add_library(LinkOptions_shared SHARED LinkOptionsLib.c)
target_link_options(LinkOptions_shared PRIVATE $<$<CONFIG:Release>:${pre}BADFLAG_RELEASE${obj}>

View File

@ -21,6 +21,7 @@ if (NOT CMAKE_C_COMPILER_ID STREQUAL "Intel")
run_cmake_target(LINK_OPTIONS basic LinkOptions)
run_cmake_target(LINK_OPTIONS interface LinkOptions_consumer)
run_cmake_target(LINK_OPTIONS static LinkOptions_static --config Release)
run_cmake_target(LINK_OPTIONS shared LinkOptions_shared --config Release)
run_cmake_target(LINK_OPTIONS mod LinkOptions_mod --config Release)
run_cmake_target(LINK_OPTIONS exe LinkOptions_exe --config Release)