CMake find_package Boost не работает при многократном использовании - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь использовать написанную мной библиотеку (is-msgs), которая зависит от boost :: filesystem и имеет следующий файл is-msgsConfig.cmake:

include(CMakeFindDependencyMacro)

find_dependency(Protobuf)
find_dependency(spdlog)
find_dependency(Boost COMPONENTS filesystem)

include("${CMAKE_CURRENT_LIST_DIR}/is-msgsTargets.cmake")

Если я пытаюсь использоватьнапример, в библиотеке для сборки исполняемого файла все работает так, как ожидалось:

find_package(is-msgs)

add_executable(example example.cpp)
target_link_libraries(example is-msgs::is-msgs)

Хотя, если мой исполняемый файл также зависит от другого компонента boost, например, boost :: chrono, следующий код не будет работать:

find_package(Boost REQUIRED COMPONENTS chrono)
find_package(is-msgs)

add_executable(example example.cpp)
target_link_libraries(example is-msgs::is-msgs boost::chrono)

Выходы:

CMake Error at CMakeLists.txt:11 (add_executable):
  Target "main" links to target "Boost::filesystem" but the target was not
  found.  Perhaps a find_package() call is missing for an IMPORTED target, or
  an ALIAS target is missing?

Однако, если я переупорядочиваю инструкцию find_package, она будет работать без проблем:

find_package(is-msgs)
find_package(Boost REQUIRED COMPONENTS chrono)

add_executable(example example.cpp)
target_link_libraries(example is-msgs::is-msgs boost::chrono)

Что-то не так с моим is-msgsConfigФайл .cmake или это ошибка в find_package (Boost)?Я использую CMake 3.11.1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...