cmake 简单配置文件示例

新手上路,请多包涵

现在我有一个我自己制作的库,我想在另一个 CMake c++ 项目中使用它。它像这样存在于我的计算机中。

 ${MY_LIB_PATH}\include
${MY_LIB_PATH}\lib\x86\debug\lib-files
${MY_LIB_PATH}\lib\x86\release\lib-files
${MY_LIB_PATH}\lib\x64\debug\lib-files
${MY_LIB_PATH}\lib\x64\release\lib-files

使 CMake find_package 知道这些的基本配置文件是什么样的?我预计它会非常简单,因为它没有太多信息可以提供。 但是这一页只是让我头疼。

抱歉,我决定复制源代码,所以我真的不知道应该接受哪个答案。

原文由 J. Doe 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 348
1 个回答

不要自己编写配置;使用 CMake 的 export 命令。它太宽泛了,无法在此处完整介绍,但这是我的一个项目中的一个修改示例:

 install(TARGETS
        your_target
    EXPORT YourPackageConfig
    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
export(TARGETS
        your_target
    NAMESPACE YourPackage::
    FILE "${CMAKE_CURRENT_BINARY_DIR}/YourPackageConfig.cmake"
)
install(EXPORT
        YourPackageConfig
    DESTINATION "${CMAKE_INSTALL_DATADIR}/YourPackage/cmake"
    NAMESPACE YourPackage::
)

这将为您创建配置文件,因此其他项目可以通过 find_package 使用它。

 find_package(YourPackage REQUIRED)
target_link_libraries(foo YouprPackage::your_target)

这会自动处理 IMPORTED 目标,还允许您嵌入编译器标志、包含路径、库依赖项,甚至哪些文件是您的接口的一部分(基本上,任何属于 INTERFACE 属性)。

原文由 Stephen Newell 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题