在CMake导出中导出复制的文件路径

时间:2019-02-21 15:28:58

标签: cmake

我有一个库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文件,并保持代码尽可能简单。

0 个答案:

没有答案