[CMake] Rebuild target when external library changes?

Lezz Giles lgiles at SoapStoneNetworks.com
Wed Dec 3 09:51:39 EST 2008


One question, one suggestion:

If I do specify full paths, doesn't that mean that I'm forcing cmake to use static linking?  Doesn't this preclude one of the advantages of cmake - that it's easy to switch from static to dynamic linking?  (Not that I'm complaining!  I'm definitely going to use Bill's solution.)

And how about this behaviour:
- if TARGET_LINK_LIBRARIES() is given a full path or the name of a library that it knows about, the dependency is created (in other words, no change),
- if it is given a library name that it doesn't know about, it uses the standard method to find the library and adds the dependency (new behaviour),
- if it can't find the library then it prints a warning (new behaviour), and finally
- this behaviour is added to the documentation (which currently doesn't show TARGET_LINK_LIBRARIES being given pathnames, just library names, and which also doesn't mention TARGET_LINK_LIBRARIES adding dependencies at all).

Lezz

-----Original Message-----
From: cmake-bounces at cmake.org [mailto:cmake-bounces at cmake.org] On Behalf Of Bill Hoffman
Sent: Wednesday, December 03, 2008 9:23 AM
To: cmake at cmake.org
Subject: Re: [CMake] Rebuild target when external library changes?

Hugo Heden wrote:

> 
> Is there a reason for why CMake does not complain about the OP:s
> suggestion, "TARGET_LINK_LIBRARIES(hellow fred)"?
> 
> In general, I would want CMake to be stricter and complain more, to
> make it faster catching bugs like this . Is there a way (a command
> line flag, a variable or something) to make CMake stricter?
> 

The code you had was valid.  If CMake complained about every external 
library that was used without a full path 90% of the projects would be 
complaining.  Take for instance linking in libm on a unix machine.

target_link_libraries(foo m)

Many times this is a built in library, and you do not want to attempt to 
specify the full path to the library.  If you did, you would have to 
understand way too much about how each compiler figures stuff like that 
out.

However, I suppose it would not be that hard to add a global property 
that gave a warning for all non-full path library links.  I am just not 
sure how useful it would be.   However, as a matter of style it is 
certainly preferable to specify a full path to as many libraries as you can.

-Bill

_______________________________________________
CMake mailing list
CMake at cmake.org
http://www.cmake.org/mailman/listinfo/cmake


More information about the CMake mailing list