[CMake] Help with Policy CMP0026 (disallow LOCATION target property)

David Cole DLRdave at aol.com
Tue Dec 23 16:59:50 EST 2014


Paul,

Are you sure there's a problem using TARGET_FILE in your original context?

It seems to me it should work...

>From http://www.cmake.org/cmake/help/v3.1/manual/cmake-generator-expressions.7.html
:

$<TARGET_FILE:tgt>
Full path to main file (.exe, .so.1.2, .a) where tgt is the name of a target.

You should be able to use that in a custom command in your custom
stage_tgt target...

You have to give the name of the target for the TARGET_FILE generator
expression, so it should work for any target that cmake knows about.

Can you point to a simplified reproducible case where this does not work?

Maybe there's some other complication in your real project that is
making it seem like it's not working.... but I think it should. Can
you send us any code?


HTH,
David C.


On Tue, Dec 23, 2014 at 4:32 PM, Parag Chandra <parag at ionicsecurity.com> wrote:
> Have you tried the CMake variables LIBRARY_OUTPUT_PATH and
> EXECUTABLE_OUTPUT_PATH? I¹ve been using them to accomplish much the same
> thing.
>
>
> Parag Chandra
> Software Engineer, Mobile Team
> Mobile: +1.919.824.1410
>
>  <https://ionic.com>
>
> Ionic Security Inc.
> 1170 Peachtree St. NE STE 2285, Atlanta, GA 30309
>
>
>
>
>
>
>
>
>
>
>
> On 12/23/14, 4:06 PM, "Paul Smith" <paul at mad-scientist.net> wrote:
>
>>Hi all.  I need a pointer or two.
>>
>>In my environment I need to have my executables and binaries copied to
>>another location; this has to happen as part of the default "all"
>>target: it can't be required to run "install" for example (we use the
>>"install" rule for a "real" install step, for one thing).
>>
>>What I was doing with 2.8.12 was creating a custom target "stage_<foo>"
>>with a prerequisite of target <foo>, which had a custom command that
>>copied <foo>.  To do this I need to run get_property(pth TARGET <foo>
>>PROPERTY LOCATION) so I know where the target file is living, and then I
>>use "cmake -E copy ${pth} ${DESTDIR}" to copy it to the right place.
>>
>>In 3.x this use is deprecated and I wonder what to do instead.
>>
>>If I add a POST_BUILD custom command directly to target <foo> which
>>copies the file then I can use $<TARGET_FILE:<foo>> in my COMMAND script
>>and that works...
>>
>>Except, if someone deletes the copy of the file without touching
>>anything else, it doesn't get recopied (because cmake doesn't know about
>>the copy and so doesn't realize something is wrong).
>>
>>I need this to be recopied because we have a habit of just deleting the
>>entire destination directory and re-running the build to make a fresh
>>copy without changing anything else.
>>
>>I've thought about many ways to do this, but I can't seem to get around
>>the fact that generator expressions like $<TARGET_FILE...> are only
>>available within the commands of the target.
>>
>>Help?
>>Thx!
>>
>>--
>>
>>Powered by www.kitware.com
>>
>>Please keep messages on-topic and check the CMake FAQ at:
>>http://www.cmake.org/Wiki/CMake_FAQ
>>
>>Kitware offers various services to support the CMake community. For more
>>information on each offering, please visit:
>>
>>CMake Support: http://cmake.org/cmake/help/support.html
>>CMake Consulting: http://cmake.org/cmake/help/consulting.html
>>CMake Training Courses: http://cmake.org/cmake/help/training.html
>>
>>Visit other Kitware open-source projects at
>>http://www.kitware.com/opensource/opensource.html
>>
>>Follow this link to subscribe/unsubscribe:
>>http://public.kitware.com/mailman/listinfo/cmake
>
> --
>
> Powered by www.kitware.com
>
> Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ
>
> Kitware offers various services to support the CMake community. For more information on each offering, please visit:
>
> CMake Support: http://cmake.org/cmake/help/support.html
> CMake Consulting: http://cmake.org/cmake/help/consulting.html
> CMake Training Courses: http://cmake.org/cmake/help/training.html
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/cmake


More information about the CMake mailing list