Ah, brilliant - I thought I'd tried that, but just gave it another go following your advice and it worked a charm. Incidentally, do you know what the rules are around the BUILD_INTERFACE generator expression and line breaks / list items? It seems to work fine in target_sources when enclosing multiple lines/files, but in target_include_directories I need one BUILD_INTERFACE expression per directory or I get an error.
Thanks again, Rich On Mon, Jun 25, 2018 at 3:28 PM, Marc CHEVRIER <marc.chevr...@gmail.com> wrote: > 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.git...@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 -- 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