В моем пакете в настоящее время у меня есть:
include(GNUInstallDirs)
target_include_directories(
mylib
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> # ***
)
, а также:
install(
TARGETS mylib
EXPORT mylib
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
)
install(
EXPORT mylib
FILE "mylib-config.cmake"
NAMESPACE mylib::
DESTINATION "lib/cmake/mylib" )
, и я замечаю, что в установленном файле config.cmake
я вижу каталог дважды :
set_target_properties(mylib::mylib PROPERTIES
# etc. etc.
INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include;${_IMPORT_PREFIX}/include"
)
Итак, в качестве эксперимента я удалил строку, помеченную ***
выше, - и теперь в файле конфигурации есть включаемый каталог только один раз .
Так это безопасно? То есть действительно ли мне не нужно указывать каталоги включения install-interface, если я устанавливаю цель с параметром INCLUDES? Или - я что-то упустил?