我可以让使用 conan 的库的用户可选择使用 conan 吗?
Can I make conan usage optional to users of my library that uses conan?
用柯南开发一个库,似乎是在强迫库的用户也使用柯南。有没有一种(标准)方法可以用 protobuf 替换 Targets.cmake 中的 CONAN_PKG::protobuf 引用?
上下文
我正在使用cmake构建一个使用protobuf的静态C++库,使用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
依赖关系。 (我希望库的用户能够使用 protobuf 头文件)。
我正在使用
install(EXPORT MylibTargets
FILE MylibTargets.cmake
NAMESPACE Mylib::
DESTINATION lib/cmake/mylib
)
生成MylibTargest.cmake
是的,所有现代 CMake 集成都可以实现某种程度的透明集成。第一次尝试是 cmake_find_package
和 cmake_find_package_multi
,但最现代的尝试是:
- CMakeDeps:see docs 生成
xxx-config.cmake
脚本,因此消费者可以正常执行 find_package(protobuf ...)
- CMakeToolchain:see docs 生成一个
conan_toolchain.cmake
以帮助将 Conan 设置映射到 CMake 语法(并且可以与 -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake
一起使用
通过这种整合,CMakeLists.txt 可以完全不了解柯南。这个集成将成为柯南2.0中的标准集成。
用柯南开发一个库,似乎是在强迫库的用户也使用柯南。有没有一种(标准)方法可以用 protobuf 替换 Targets.cmake 中的 CONAN_PKG::protobuf 引用?
上下文
我正在使用cmake构建一个使用protobuf的静态C++库,使用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
依赖关系。 (我希望库的用户能够使用 protobuf 头文件)。
我正在使用
install(EXPORT MylibTargets
FILE MylibTargets.cmake
NAMESPACE Mylib::
DESTINATION lib/cmake/mylib
)
生成MylibTargest.cmake
是的,所有现代 CMake 集成都可以实现某种程度的透明集成。第一次尝试是 cmake_find_package
和 cmake_find_package_multi
,但最现代的尝试是:
- CMakeDeps:see docs 生成
xxx-config.cmake
脚本,因此消费者可以正常执行find_package(protobuf ...)
- CMakeToolchain:see docs 生成一个
conan_toolchain.cmake
以帮助将 Conan 设置映射到 CMake 语法(并且可以与-DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake
一起使用
通过这种整合,CMakeLists.txt 可以完全不了解柯南。这个集成将成为柯南2.0中的标准集成。