[CMake] transitive linking topics
Alan W. Irwin
irwin at beluga.phys.uvic.ca
Wed Nov 23 15:16:11 EST 2011
On 2011-11-23 10:44+0100 Michael Wild wrote:
> On 11/23/2011 10:25 AM, Alan W. Irwin wrote:
>> cmake-2.8.6 has the following documentation of the
>> LINK_INTERFACE_LIBRARIES property for targets:
>>
>> LINK_INTERFACE_LIBRARIES
>> List public interface libraries for a shared library or executable.
>>
>> By default linking to a shared library target transitively links to
>> targets with which the library itself was linked. For an executable
>> with exports (see the ENABLE_EXPORTS property) no default transitive
>> link dependencies are used. This property replaces the default
>> transitive link dependencies with an explicit list. When the target
>> is linked into another target the libraries listed (and recursively
>> their link interface libraries) will be provided to the other target
>> also. If the list is empty then no transitive link dependencies
>> will
>> be incorporated when this target is linked into another target
>> even if
>> the default set is non-empty. This property is ignored for STATIC
>> libraries.
>>
>> I believe the reference to executables above is just plain
>> wrong/misleading. For example, the FAQ states that
>> LINK_INTERFACE_LIBRARIES simply lists "the libraries that should be
>> transitively included in the link by CMake" with the clear implication
>> (also confirmed by experiment below) that this target property affects
>> _everything that links to the target whose property is being set_.
>> But nothing links to an executable so why are executables mentioned at
>> all?
>
> That's not true. See the ENABLE_EXPORTS target property.
Oops. You are right. I had never ever heard of applications
exporting symbols before. Live and learn.
Alan
__________________________
Alan W. Irwin
Astronomical research affiliation with Department of Physics and Astronomy,
University of Victoria (astrowww.phys.uvic.ca).
Programming affiliations with the FreeEOS equation-of-state
implementation for stellar interiors (freeeos.sf.net); the Time
Ephemerides project (timeephem.sf.net); PLplot scientific plotting
software package (plplot.sf.net); the libLASi project
(unifont.org/lasi); the Loads of Linux Links project (loll.sf.net);
and the Linux Brochure Project (lbproject.sf.net).
__________________________
Linux-powered Science
__________________________
More information about the CMake
mailing list