使用conan开发库似乎迫使库的用户也使用conan。是否有一种(标准的)方法可以将CONAN_PKG::protobuf引用替换为Targets.cmake中的protobuf?
上下文
我使用cmake来构建一个静态C++库,使用protobuf,使用conan来处理protobuf依赖项,即
target_link_libraries(mylib
PUBLIC
CONAN_PKG::protobuf
)当我在本地安装这个库时,( ninja install )创建的MylibTargets.cmake包含对CONAN_PKG::protobuf的引用
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依赖。(我希望图书馆的用户能够使用原型文件)。
我在用
install(EXPORT MylibTargets
FILE MylibTargets.cmake
NAMESPACE Mylib::
DESTINATION lib/cmake/mylib
)生成MylibTargest.cmake
发布于 2021-09-30 15:31:01
是的,所有现代CMake集成都可以实现某种程度的透明集成。最初的尝试是cmake_find_package和cmake_find_package_multi,但最现代的尝试是:
xxx-config.cmake脚本,因此消费者可以执行正常的find_package(protobuf ...)conan_toolchain.cmake来帮助将Conan设置映射到CMake语法(可以与-DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake一起使用)有了这种集成,就有可能使CMakeLists.txt完全不知道Conan。这种集成将成为Conan2.0中的标准集成。
https://stackoverflow.com/questions/69394739
复制相似问题