首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我是否可以让使用conan的库的用户可以选择使用conan?

我是否可以让使用conan的库的用户可以选择使用conan?
EN

Stack Overflow用户
提问于 2021-09-30 15:14:53
回答 1查看 139关注 0票数 1

使用conan开发库似乎迫使库的用户也使用conan。是否有一种(标准的)方法可以将CONAN_PKG::protobuf引用替换为Targets.cmake中的protobuf?

上下文

我使用cmake来构建一个静态C++库,使用protobuf,使用conan来处理protobuf依赖项,即

代码语言:javascript
复制
target_link_libraries(mylib
    PUBLIC
        CONAN_PKG::protobuf
    )

当我在本地安装这个库时,( ninja install )创建的MylibTargets.cmake包含对CONAN_PKG::protobuf的引用

代码语言:javascript
复制
set_target_properties(Mylib::Mylib PROPERTIES
  INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include/mylib;${_IMPORT_PREFIX}/include"
  INTERFACE_LINK_LIBRARIES "CONAN_PKG::protobuf"

这迫使我的库的用户使用conan来解决CONAN_PKG::protobuf依赖。(我希望图书馆的用户能够使用原型文件)。

我在用

代码语言:javascript
复制
install(EXPORT MylibTargets
    FILE MylibTargets.cmake
    NAMESPACE Mylib::
    DESTINATION lib/cmake/mylib
    )

生成MylibTargest.cmake

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-30 15:31:01

是的,所有现代CMake集成都可以实现某种程度的透明集成。最初的尝试是cmake_find_packagecmake_find_package_multi,但最现代的尝试是:

  • CMakeDeps:见文档生成xxx-config.cmake脚本,因此消费者可以执行正常的find_package(protobuf ...)
  • CMakeToolchain:见文档生成一个conan_toolchain.cmake来帮助将Conan设置映射到CMake语法(可以与-DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake一起使用)

有了这种集成,就有可能使CMakeLists.txt完全不知道Conan。这种集成将成为Conan2.0中的标准集成。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69394739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档