CMake автоматически сгенерированный файл экспорта для перемещаемой библиотеки - PullRequest
1 голос
/ 09 мая 2019

У меня очень простая библиотека с заголовочным файлом и исходным файлом.Я использую CMake для его компиляции, первоначально так:

add_library(libOEInfoProvider SHARED
    ${CMAKE_CURRENT_LIST_DIR}/src/OE/InfoProvider.h
    ${CMAKE_CURRENT_LIST_DIR}/src/OE/InfoProvider.cpp)

# see: https://stackoverflow.com/a/25681179/276451
target_include_directories(libOEInfoProvider
    PUBLIC
    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
    $<INSTALL_INTERFACE:dist/include>)

Теперь я настроил его так, чтобы make install генерировал все необходимые файлы в папке dist, например:

install(TARGETS libOEInfoProvider EXPORT libOEInfoProviderConfig
    LIBRARY DESTINATION ${CMAKE_SOURCE_DIR}/dist/lib
)

install(DIRECTORY
    src/ DESTINATION ${CMAKE_SOURCE_DIR}/dist/include)

install(EXPORT
    libOEInfoProviderConfig DESTINATION ${CMAKE_SOURCE_DIR}/dist/cmake)

export(TARGETS libOEInfoProvider FILE libOEInfoProviderConfig.cmake)

Проблема, с которой я столкнулся, состоит в том, что сгенерированные файлы .cmake содержат абсолютных путей к папке dist, но мне нужно развернуть эту библиотеку где-нибудь еще с другой структурой каталогов.Поэтому мне нужно иметь относительные пути в .cmake, поэтому, где бы я ни размещал библиотеку, в тот момент, когда я использую find_package в клиентском коде, он сможет найти код.

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