CMake为可重定位库自动生成的导出文件

时间:2019-05-09 08:53:12

标签: c++ cmake compilation shared-libraries

我有一个非常简单的库,其中包含头文件和源文件。我正在使用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 installdist文件夹中生成所有必需的文件,如下所示:

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时,它都应该能够找到该代码。

0 个答案:

没有答案