[CMake] Globally Set Target Properties

Schuchard, Matthew Matthew.Schuchard at gtri.gatech.edu
Tue Nov 8 07:36:53 EST 2011


Thanks, I think I must be doing something wrong elsewhere then, because I follow the same syntax as what you wrote.
However, it is not working for me which means my error must be somewhere else.
I had thought, based on a stack overflow link, that CMAKE_STATIC_LIBRARY_PREFIX was only for linking to libraries, but I see now it is also for linking built libraries.

-----Original Message-----
From: Michael Wild [mailto:themiwi at gmail.com] 
Sent: Tuesday, November 08, 2011 12:34 AM
To: Schuchard, Matthew
Cc: cmake at cmake.org
Subject: Re: Globally Set Target Properties

Sorry, I misread your message. The following works for me:

--------<8----------
cmake_minimum_required(VERSION 2.8)
project(static)

set(CMAKE_STATIC_LIBRARY_PREFIX)

add_library(a STATIC a.c)
add_library(b STATIC b.c)
-------->8----------


Michael

On 11/07/2011 05:14 PM, Schuchard, Matthew wrote:
> Thanks for the response.
> 
>  
> 
> Actually, that is what I want to do:
> 
>  
> 
> "> Specifically, I need to remove the prefix "lib" from all statically
> 
>> linked libraries I build."
> 
>  
> 
> Also, I do not have to specify full paths to libraries I link to 
> because of the CMAKE_STATIC_LIBRARY_PREFIX command I had mentioned in 
> the initial message.
> 
> Do you know if is possible to set global properties of targets like I 
> am trying to?
> 
>  
> 
> *From:*Schuchard, Matthew
> *Sent:* Monday, November 07, 2011 11:06 AM
> *To:* Schuchard, Matthew
> *Subject:* Globally Set Target Properties
> 
>  
> 
> 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. /
> 
>>//
> 
>  
> 
> *From:**Michael Wild* themiwi at gmail.com 
> <mailto:cmake%40cmake.org?Subject=Re%3A%20%5BCMake%5D%20Globally%20Set
> %20Target%20Properties&In-Reply-To=%3C4EB7F7A2.50903%40gmail.com%3E>
> *Sent:* Monday, November 07, 2011 10:56 AM
> *To:* Schuchard, Matthew
> *Subject:* Globally Set Target Properties
> 
>  
> 
> 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