柯南和 Cmake:目标已经存在
Posted
技术标签:
【中文标题】柯南和 Cmake:目标已经存在【英文标题】:Conan and Cmake: target already exists 【发布时间】:2021-01-15 10:40:02 【问题描述】:我将 conan_cmake_run() 宏用于 CMake。当我添加两个具有相同外部 dep 的库时。它会导致错误消息。
例子:
conan_cmake_run(REQUIRES boost/1.74.0 BASIC_SETUP CMAKE_TARGETS)
conan_cmake_run(REQUIRES hdf5/1.10.6 BASIC_SETUP CMAKE_TARGETS)
Boost 和 HDF5 会将 zlib 添加为外部 dep。因此,这会导致在 CMake 配置期间出现以下错误消息。
CMake Error at build/conanbuildinfo_multi.cmake:152 (add_library):
add_library cannot create imported target "CONAN_PKG::zlib" because another
target with the same name already exists.
Call Stack (most recent call first):
build/conanbuildinfo_multi.cmake:286 (conan_define_targets)
cmake/modules/conan.cmake:515 (conan_basic_setup)
CMakeLists.txt:104 (conan_cmake_run)
有没有办法明确不为 boost/1.74.0 或 hdf5/1.10.6 添加“CONAN_PKG::zlib”?
提前非常感谢!
最好的,
【问题讨论】:
【参考方案1】:重要的是不要运行两次cmake_conan_run
,而只运行一次带有多个参数,例如:
conan_cmake_run(REQUIRES boost/1.74.0 hdf5/1.10.6 BASIC_SETUP CMAKE_TARGETS)
单独运行,第二次将覆盖前一次的结果。此外,在安装过程中可能会被忽视的冲突(如 boost/1.74 取决于 zlib/1.2.8 和 hdf5/1.10.6 取决于 zlib/1.2.11)。在安装项目的依赖时,应该做一个conan install
,或者一个conan_cmake_run()
。
【讨论】:
以上是关于柯南和 Cmake:目标已经存在的主要内容,如果未能解决你的问题,请参考以下文章