[CMake] Editing IMPORTED targets
Stephen Kelly
steveire at gmail.com
Sun Oct 16 09:43:50 EDT 2016
Ivan Shapovalov wrote:
> On 2016-10-03 at 14:43 +0200, Stephen Kelly wrote:
>> Ivan Shapovalov wrote:
>>
>> > Hello!
>> >
>> > Using find modules to detect dependencies has a nice feature: it is
>> > then possible to edit the resulting cache entries to link to
>> > different
>> > libraries (or add other libraries along the found ones, for
>> > whatever
>> > purposes), or change directories, or flags, or whatever.
>> >
>> > Using find configs and IMPORTED targets, however, prevents doing
>> > this,
>> > because IMPORTED targets are not stored in CMake cache. This can be
>> > a
>> > significant disadvantage at times.
>>
>> Can you be more specific?
>>
>> Why can the user provide better information than the supplier of the
>> IMPORTED target?
>>
>> Thanks,
>>
>> Steve.
>>
>>
>
> Well, sometimes you need to do certain "maintainer-specific" overrides:
> include custom headers before everything, link to custom libraries
> before everything and so on. Think LD_PRELOAD, but at link time.
What is a 'maintainer' in that sentence? A 'maintainer' can change the
buildsystem CMake files. I suspect that's not an actor you mean. If you can
be more specific maybe I will understand.
Would 'wrapping' be a good solution?
add_library(foo_wrapper INTERFACE)
target_include_directories(foo_wrapper INTERFACE
${custom_includes}
$<TARGET_PROPERTY:Foo::foo,INTERFACE_INCLUDE_DIRECTORIES>
)
target_link_libraries(foo_wrapper INTERFACE
${custom_libraries}
Foo::foo
)
Thanks,
Steve.
More information about the CMake
mailing list