【问题标题】:Creating a findable shared library with cmake使用 cmake 创建可查找的共享库
【发布时间】:2017-04-03 13:38:00
【问题描述】:

我正在将库从手写的 Makefile 改写为使用 cmake。我陷入了需要从库 B 到库 A 的地步。

我可以使用 find_package 找到库,但是当它们被链接时,cmake 抱怨没有构建 .so 文件的规则,因为它是在 build 目录而不是安装目录。

如果我查看包含此硬编码路径的 /usr/lib/cmake/library/libraryConfigVersion.cmake 文件,就会对此进行解释。该文件是通过以下步骤创建的:

write_basic_package_version_file(
    "${CMAKE_CURRENT_BINARY_DIR}/libraryConfigVersion.cmake"
    VERSION ${LIBRARY_VERSION}
    COMPATIBILITY AnyNewerVersion
)

export(EXPORT libraryTargets
    FILE "${CMAKE_CURRENT_BINARY_DIR}/library/libraryConfigVersion.cmake"
    NAMESPACE library::
)

(我已将我的库名称替换为“库”)。如何让 cmake 编写正确的路径,以便我可以轻松地从其他 cmake 项目链接到我的库?

【问题讨论】:

    标签: cmake


    【解决方案1】:

    命令export 实际上导出构建树。这是明确写在文档中的。

    对于导出安装树,使用install(TARGETS ... EXPORT) 加上install(EXPORT)install 命令的文档中描述了这两个流程。

    另见 CMake 教程Exporting and Importing Targets

    【讨论】:

      猜你喜欢
      • 2013-07-04
      • 1970-01-01
      • 2021-07-17
      • 1970-01-01
      • 2016-12-30
      • 2023-03-03
      • 2020-01-17
      • 2018-08-25
      • 2014-06-12
      相关资源
      最近更新 更多