[cmake-developers] Requesting Advice: Installing object files
Chris Bieneman
chris.bieneman at me.com
Wed Jan 18 14:47:42 EST 2017
> On Jan 18, 2017, at 5:58 AM, Ben Boeckel <ben.boeckel at kitware.com> wrote:
>
> On Wed, Jan 18, 2017 at 10:14:26 +0100, Nils Gladitz wrote:
>> On 17.01.2017 23:25, Chris Bieneman wrote:
>>> Hello CMake-developers!
>>>
>>> In one of the LLVM sub-projects we have a problem where we need to
>>> install object files, which doesn't seem like a particularly easy
>>> task. I'm curious if anyone has any advice on how to approach this
>>> problem.
>>>
>>> The patch is currently being reviewed here:
>>> https://reviews.llvm.org/D28791
>>>
>>> Since the object files have fairly simple compile commands our current
>>> approach is to compile the files in custom commands, then use
>>> install(FILES...). This is workable, but I'm wondering if there is a
>>> better way. They do need to be object files, static archives would not
>>> work because these specially named files are handled by linkers and
>>> other tools that we don't control.
>>
>> Also more of a workaround but perhaps you could create static libraries
>> but extract them with e.g. CMAKE_AR (toolchain specific) during either
>> installation e.g. install(CODE|SCRIPT) or as a POST_BUILD custom command.
We could consider this, but I'm not sure that this is really any simpler than what we're doing.
>
> This issue might be the best way to go:
>
> https://gitlab.kitware.com/cmake/cmake/issues/15226 <https://gitlab.kitware.com/cmake/cmake/issues/15226>
If this allowed TARGET_OBJECTS to be used in the install(FILES ...) command, then we could create an object library and a custom install rule for the objects, which would be a lot cleaner.
>
>> An OBJECT library might be better suited in theory but I don't think it
>> currently allows installation and the location of the object files is
>> generator specific (and afair not always known to cmake).
>> By doing a manual extraction of the archive you'd be in control over
>> where the objects go.
>
> Plus our plan for installing OBJECT libraries was to install them as
> INTERFACE libraries, leaving the objects themselves behind. The idea is
> to allow object libraries into target_link_libraries() for usage
> requirements and to support exporting them as part of the build system
> (an explicit $<TARGET_OBJECTS> would still be required to use their
> objects due to issues with transitive linking causing duplicate symbols
> if target_sources were used).
Ah... that wouldn't work for us because we actually need the objects to be installed in the final product.
Thanks!
-Chris
>
> --Ben
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake-developers/attachments/20170118/6d29744a/attachment.html>
More information about the cmake-developers
mailing list