[CMake] Interface source paths evaluated relative to dependent library

Marc CHEVRIER marc.chevrier at gmail.com
Mon Jun 25 10:28:27 EDT 2018


You can manage different paths (one for build export and one for install
export) by using '$<BUILD_INTERFACE:...>' and '$<INSTALL_INTERFACE:...>'.
'$<BUILD_INTERFACE:...>' accepts absolute paths and
'$<INSTALL_INTERFACE:...> expects paths relative to the install prefix
(CMAKE_INSTALL_PREFIX variable).
.


Le lun. 25 juin 2018 à 16:23, Rich T <rsjtaylor.github at gmail.com> a écrit :

> Hi everyone, I've a question about interface sources.
>
> If you create an interface target A, add some sources via
>
> add_library(A INTERFACE)
> target_sources(A INTERFACE some/relative/path)
>
> then link to another library B:
>
> add_library(B)
> target_link_libraries(B PRIVATE A)
>
> B will search for those sources relative to its own source directory, not
> the directory where A is defined. This means B fails to configure with a
> missing sources error if the targets are in different directories.
>
> If I specify the paths absolutely, B successfully finds the sources.
> However, A can no longer be exported and neither can the static variant of
> B by association.
>
> I tried using $<TARGET_PROPERTY:A,SOURCE_DIR> in front of the relative
> path, however it turns out SOURCE_DIR isn't a whitelisted property for
> INTERFACE libraries.
>
> Is this behavior intentional, and if so, is there any workaround? (other
> than defining all targets with interface sources in the same directory as
> the targets that use them)
> --
>
> 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:
> https://cmake.org/mailman/listinfo/cmake
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://cmake.org/pipermail/cmake/attachments/20180625/28cacfce/attachment-0001.html>


More information about the CMake mailing list