CONAN_PKG ::не найден при использовании cmake для генерации цели сборки - PullRequest
1 голос
/ 07 ноября 2019

CONAN_PKG::spdlog не найдено при использовании CMake для генерации конфигураций сборки.

Я использую пакет conan spdlog/1.3.1@bincrafters/stable. У меня есть исполняемая цель CMake, которая ссылается на пакет conan spdlog. Я получаю это сообщение об ошибке:

[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, 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 .........

Кто-нибудь знает причину?

1 Ответ

1 голос
/ 07 ноября 2019

Вы ищете подход 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

...