[CMake] Get configuration-dependant LOCATION property

Michael Wild themiwi at gmail.com
Mon Oct 4 07:01:53 EDT 2010


On 4. Oct, 2010, at 10:51 , Mateusz Loskot wrote:

> On 04/10/10 05:40, Michael Wild wrote:
>> 
>> On 3. Oct, 2010, at 23:53 , Mateusz Loskot wrote:
>> 
>>> On 03/10/10 22:27, J Decker wrote:
>>>> On Sun, Oct 3, 2010 at 10:28 AM, Mateusz
>>>> Loskot<mateusz at loskot.net>  wrote:
>>>>> Hi,
>>>>> 
>>>>> I understand what the manual [1] says about LOCATION property
>>>>> that it is more or less deprecated. Is that right?
>>>>> 
>>>>> I'm building software (shared libraries and executables) on
>>>>> both, Linux and Windows (using VS 2005, 2008, 2010) and I'm
>>>>> trying to find out what would be portable way to get target
>>>>> output location. It is location of output directory where
>>>>> toolset genreates .so or .dll files.
>>>>> 
>>>>> I tried LOCATION property but it is empty (on Windows at
>>>>> least)
>>>>> 
>>>>> get_target_property(MY_TARGET_LOCATION ${MY_TARGET} LOCATION)
>>>> 
>>>> get_target_property(MY_TARGET_LOCATION ${MY_TARGET}
>>>> LOCATION_${CMAKE_BUILD_TYPE)) ?
>>> 
>>> It does not help.
>>> 
>>> As I mentioned in my original post, ${CMAKE_BUILD_TYPE} is empty
>>> when you generate Visual Studio projects.
>> 
>> 
>> I didn't look into the specifics of your problem, but would it be a
>> solution to configure _all_ locations into a CMake script which
>> performs your required action at build/test time?
> 
> I haven't mention that. I try to keep default CMake build tree
> layout. Regardless how simple changes it would require, IMHO,
> messing with *_OUTPUT properties overrides portability
> provided by CMake out of the box and would require manual
> handling.
> 
> I define target for CMake and CMake knows where to output files.
> Now, simply, I would like to ask "Dear CMake, tell me please where do you send my binaries".
> 
> Can I do it? How?
> 
> > You could pass the configuration type as a -D parameter.
> 
> I could pass CMAKE_BUILD_TYPE, but this would be available once
> when configuration is performed. Then, form Visual Studio IDE
> user can change configuration which CMake settings will not be aware of.

I think you didn't understand my answer. What I proposed was to wrap the operation you want to perform in a script. This way you can configure all possible output locations into it and then select the correct one at build time via an argument.

HTH

Michael

--
There is always a well-known solution to every human problem -- neat, plausible, and wrong.
H. L. Mencken

-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 195 bytes
Desc: This is a digitally signed message part
URL: <http://www.cmake.org/pipermail/cmake/attachments/20101004/54343f04/attachment.pgp>


More information about the CMake mailing list