Экспорт пути скопированного файла в экспорт CMake - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть библиотека 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 и хранить кодкак можно проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...