名侦探柯南:目标已经存在

时间:2020-09-29 19:04:27

标签: cmake hdf5 conan

我将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 个答案:

答案 0 :(得分:2)

重要的是不要运行两次cmake_conan_run,而只运行一次具有多个参数的东西,例如:

conan_cmake_run(REQUIRES boost/1.74.0 hdf5/1.10.6 BASIC_SETUP CMAKE_TARGETS)

单独运行,第二个将覆盖前一个的结果。此外,在安装中可能会引起注意的冲突(例如,升压/1.74(取决于zlib / 1.2.8)和hdf5 / 1.10.6(取决于zlib / 1.2.11))。安装项目的依赖项时,应完成一个conan install或一个conan_cmake_run()