[CMake] target_link_libraries: prefer static to dynamic

Michael Wild themiwi at gmail.com
Wed Dec 30 12:10:39 EST 2009


On 30. Dec, 2009, at 18:02 , Jed Brown wrote:

> On Wed, 30 Dec 2009 17:51:29 +0100, Michael Wild <themiwi at gmail.com> wrote:
>> 
>> On 30. Dec, 2009, at 17:32 , Jed Brown wrote:
>> 
>>> On Mon, 28 Dec 2009 12:29:05 +0100, Pau Garcia i Quiles <pgquiles at elpauer.org> wrote:
>>>> I'm using CMake 2.8.0 on Linux. Yes, Michael is right: I want it to
>>>> happen automagically. That was the whole point of this thread :-)
>>> 
>>> I would argue that FindXXX.cmake is the wrong place for the decision to
>>> be made since I may want my project to link different targets
>>> differently (as with pkg-config's --static option).
>>> 
>>> Jed
>> 
>> That would be a rather unusual choice (IMHO). What would be your
>> preferred way of doing this with CMake?
> 
> I realize it is much different than how CMake currently operates (where
> libraries are a lower-level concept than in e.g. pkg-config), but I
> don't believe it's a strange thing to want a project to link different
> targets differently.
> 
> Jed

I don't think this will ever work easily, since the user can (and should) be able to specify a specific library in the cache. Your request would require that every library, for every target, gets a separate cache entry. If you have more than just ~10 targets, the number of cache entries will just explode and become very confusing to the user. Worse, you might actually run into serious trouble due to transitive linking (say target library A links against the external library foo, and B links against both A and also foo. Now, if the user doesn't know that the author of the CMakeLists.txt made a mistake, and choses different versions of the foo library for A and B, all hell breaks lose... Your right, in old-school autohell projects using pkg-config it is possible to do such things, but then the user had no option of overriding that choice.

Just my 2c.

Michael


More information about the CMake mailing list