diff options
Diffstat (limited to 'Help')
-rw-r--r-- | Help/manual/cmake-generator-expressions.7.rst | 10 | ||||
-rw-r--r-- | Help/release/dev/rescan-static-libraries.rst | 5 | ||||
-rw-r--r-- | Help/variable/CMAKE_LANG_LINK_GROUP_USING_FEATURE.rst | 7 | ||||
-rw-r--r-- | Help/variable/CMAKE_LINK_GROUP_USING_FEATURE.rst | 7 | ||||
-rw-r--r-- | Help/variable/LINK_GROUP_PREDEFINED_FEATURES.txt | 22 |
5 files changed, 48 insertions, 3 deletions
diff --git a/Help/manual/cmake-generator-expressions.7.rst b/Help/manual/cmake-generator-expressions.7.rst index 403c06e..0ab4bc2 100644 --- a/Help/manual/cmake-generator-expressions.7.rst +++ b/Help/manual/cmake-generator-expressions.7.rst @@ -1236,7 +1236,7 @@ Output-Related Expressions expression. The ``library-list`` argument can hold CMake targets or external libraries. - Any ``CMake`` target of type :ref:`OBJECT <Object Libraries>` or + Any CMake target of type :ref:`OBJECT <Object Libraries>` or :ref:`INTERFACE <Interface Libraries>` will be ignored by this expression and will be handled in the standard way. @@ -1284,7 +1284,7 @@ Output-Related Expressions target_link_libraries(lib4 PRIVATE lib3 "$<LINK_GROUP:feature1,lib1,lib2>") # lib4 will only be linked with lib3 and the group {lib1,lib2} - This example will be "re-written" by ``CMake`` in the following form: + This example will be "re-written" by CMake in the following form: .. code-block:: cmake @@ -1317,7 +1317,7 @@ Output-Related Expressions target_link_libraries(lib3 PRIVATE "$<LINK_GROUP:feat,lib1A,lib1B>" "$<LINK_GROUP:feat,lib2A,lib2B>") - This example will be "re-written" by ``CMake`` in the following form: + This example will be "re-written" by CMake in the following form: .. code-block:: cmake @@ -1337,6 +1337,10 @@ Output-Related Expressions So, we have a circular dependency between groups ``{lib1A,lib1B}`` and ``{lib2A,lib2B}``. + CMake pre-defines some features of general interest: + + .. include:: ../variable/LINK_GROUP_PREDEFINED_FEATURES.txt + .. genex:: $<INSTALL_INTERFACE:...> Content of ``...`` when the property is exported using :command:`install(EXPORT)`, diff --git a/Help/release/dev/rescan-static-libraries.rst b/Help/release/dev/rescan-static-libraries.rst new file mode 100644 index 0000000..1ab3485 --- /dev/null +++ b/Help/release/dev/rescan-static-libraries.rst @@ -0,0 +1,5 @@ +rescan-static-libraries +----------------------- + +* The :genex:`LINK_GROUP` generator expression gained the ability to manage + circular references between static libraries by using ``RESCAN`` feature. diff --git a/Help/variable/CMAKE_LANG_LINK_GROUP_USING_FEATURE.rst b/Help/variable/CMAKE_LANG_LINK_GROUP_USING_FEATURE.rst index b68c94a..f2ef843 100644 --- a/Help/variable/CMAKE_LANG_LINK_GROUP_USING_FEATURE.rst +++ b/Help/variable/CMAKE_LANG_LINK_GROUP_USING_FEATURE.rst @@ -18,3 +18,10 @@ See also the associated variable features independent from the link language. .. include:: CMAKE_LINK_GROUP_USING_FEATURE.txt + +Predefined Features +^^^^^^^^^^^^^^^^^^^ + +CMake pre-defines some features of general interest: + +.. include:: LINK_GROUP_PREDEFINED_FEATURES.txt diff --git a/Help/variable/CMAKE_LINK_GROUP_USING_FEATURE.rst b/Help/variable/CMAKE_LINK_GROUP_USING_FEATURE.rst index 8aade01..fad1837 100644 --- a/Help/variable/CMAKE_LINK_GROUP_USING_FEATURE.rst +++ b/Help/variable/CMAKE_LINK_GROUP_USING_FEATURE.rst @@ -23,3 +23,10 @@ for the linker language, the variable set. .. include:: CMAKE_LINK_GROUP_USING_FEATURE.txt + +Predefined Features +^^^^^^^^^^^^^^^^^^^ + +CMake pre-defines some features of general interest: + +.. include:: LINK_GROUP_PREDEFINED_FEATURES.txt diff --git a/Help/variable/LINK_GROUP_PREDEFINED_FEATURES.txt b/Help/variable/LINK_GROUP_PREDEFINED_FEATURES.txt new file mode 100644 index 0000000..7c5b458 --- /dev/null +++ b/Help/variable/LINK_GROUP_PREDEFINED_FEATURES.txt @@ -0,0 +1,22 @@ +**Circular references with static libraries** + +Some linkers are one-pass only so to handle circular references between +static libraries, the following feature can be used: + +``RESCAN`` + The specified static libraries are searched repeatedly until no + new undefined references are created. Normally, an static library is searched + only once in the order that it is specified on the command line. If a symbol + in that library is needed to resolve an undefined symbol referred to by an + object in an library that appears later on the command line, the linker would + not be able to resolve that reference. By grouping the static libraries, they + all be searched repeatedly until all possible references are resolved (use + linker options ``--start-group`` and ``--end-group`` or, on ``SunOS``, + ``-z rescan-start`` and ``-z rescan-end``). + + Using this feature has a significant performance cost. It is best to use it + only when there are unavoidable circular references between two or more static + libraries. + + This feature is available on ``Linux`` and ``SunOS`` platforms as well as + ``Windows`` when ``GNU`` toolchain is used. |