【问题标题】:Conan and Cmake: target already exists柯南和 Cmake:目标已经存在
【发布时间】: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”?

提前非常感谢!

最好的,

【问题讨论】:

    标签: cmake hdf5 conan


    【解决方案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()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-14
      • 2021-12-15
      • 2023-03-11
      • 1970-01-01
      • 2021-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多