[CMake] Globally Set Target Properties

Michael Wild themiwi at gmail.com
Mon Nov 7 10:22:10 EST 2011


On 11/07/2011 04:15 PM, Schuchard, Matthew wrote:
> I am trying to globally set target properties for an entire configuration.
> 
> Specifically, I need to remove the prefix “lib” from all statically
> linked libraries I build.
> 
>  
> 
> I already used CMAKE_STATIC_LIBRARY_PREFIX “” such that all libraries I
> explicitly link to will not have CMake search for libraries of format
> “libfoo.a” but rather “foo.a” when I specify “foo.”
> 
>  
> 
> However, I cannot seem to globally specify that all target libraries
> which are statically linked which I build have the prefix removed.
> 
>  
> 
> I have tried set_target_properties with Unix wildcards to no avail.
> 
> I have also tried set_property(GLOBAL PROPERTY PREFIX “”) and
> set_property(TARGET PROPERTY PREFIX “”) which were both unsuccessful (or
> maybe I needed to force the cache, but cache was already an argument in
> the usage statement providing other functionality so I assumed its
> normal functionality as an argument was unavailable).
> 
> Could not find any help on Google either.
> 
>  
> 
> There is also the possibility this is impossible to do with CMake, so if
> someone can verify that I would also be appreciative.
> 

These properties apply to targets *create* by CMake, that's not what you
want. In your case, simply specify the absolute path to the library
file. E.g.

target_link_libraries(bar /usr/lib/foo.a)

If you want to use find_library to find these libraries, have a look at
CMAKE_FIND_LIBRARY_PREFIXES.

HTH

Michael



More information about the CMake mailing list