У меня есть библиотека A
, которая построена и установлена с использованием CMake.Для установки он помещает общую библиотеку и файлы заголовков в каталог установки.Его файл CMakeLists.txt выглядит следующим образом:
add_library(A SHARED {A_SRC})
set_target_properties(
A PROPERTIES
OUTPUT_NAME a
PUBLIC_HEADER "${A_HEADERS_SRC}"
)
install(
TARGETS A
EXPORT A
LIBRARY DESTINATION lib
)
install(
EXPORT A
DESTINATION cmake
FILE A-config.cmake
)
install(
FILES ${A_HEADERS_SRC}
DESTINATION include/a
)
Создает файловую структуру, подобную следующей для make install
:
dist
├─ lib
│ └─ liba.so
├─ include
│ └─ a
│ └─ a.h
└─ cmake
└─ A-config.cmake
Другой проект CMake B
сейчасимпортирует эту библиотеку, используя
list(APPEND CMAKE_PREFIX_PATH "/path/to/a/dist/cmake")
find_package(A REQUIRED)
add_executable(B ${B_SRC})
target_link_libraries(B PRIVATE A)
При этом она имеет доступ к цели A
и может создать исполняемую ссылку на нее.
Есть ли способ получить путь кскопированные заголовки (каталог dist/include/a
), или чтобы CMake записал это в сгенерированный файл A-config.cmake
?
Если возможно, я хочу сам не писать файл A-config.cmake
и хранить кодкак можно проще.