mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-06 14:19:59 -05:00
Genex-LINK_GROUP: Add feature RESCAN
Feature RESCAN can be used to manage circular references between static libraries.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
Reference in New Issue
Block a user