【问题标题】:CONAN_PKG::<PKG-NAME> not found when using cmake to generate build target使用 cmake 生成构建目标时找不到 CONAN_PKG::<PKG-NAME>
【发布时间】:2020-03-04 01:33:59
【问题描述】:

使用 CMake 生成构建配置时找不到CONAN_PKG::spdlog

我使用的 conan 包是 spdlog/1.3.1@bincrafters/stable。 我有一个引用柯南包spdlog 的CMake 可执行目标。我收到此错误消息:

[build] CMake Error at src/apps/ResultObserver/CMakeLists.txt:10 (ADD_EXECUTABLE):
[build]   Target "ResultObserver" links to target "CONAN_PKG::spdlog" but the target
[build]   was not found.  Perhaps a find_package() call is missing for an IMPORTED
[build]   target, or an ALIAS target is missing?

我的 CMakeLists.txt 中有这些行。

include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup()

ADD_EXECUTABLE(ResultObserver src/ResultObserver.cpp)

TARGET_LINK_LIBRARIES(ResultObserver CONAN_PKG::spdlog)

另外,安装conan包后,在build目录下会生成conanbuildinfo.cmake文件。

我检查了里面的文件。它包含这些行。

    add_library(CONAN_PKG::spdlog INTERFACE IMPORTED)

    # Property INTERFACE_LINK_FLAGS do not work, necessary to add to INTERFACE_LINK_LIBRARIES
    set_property(TARGET CONAN_PKG::spdlog PROPERTY INTERFACE_LINK_LIBRARIES .........

有人知道原因吗?

【问题讨论】:

    标签: cmake conan


    【解决方案1】:

    您正在寻找TARGETS 方法。您需要将TARGETS 传递给conan_basic_setup() 以生成CONAN_PKG::。否则,只有${CONAN_LIBS} 可用。

    include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
    conan_basic_setup(TARGETS)
    
    ADD_EXECUTABLE(ResultObserver src/ResultObserver.cpp)
    TARGET_LINK_LIBRARIES(ResultObserver CONAN_PKG::spdlog)
    

    关于 CMake 目标生成器的更多信息在这里: https://docs.conan.io/en/latest/integrations/build_system/cmake/cmake_generator.html#targets-approach

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多