Я пытаюсь использовать написанную мной библиотеку (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.