Вы, кажется, используете старые переменные CMake для Boost. Начиная с Boost 1.70, Boost теперь предоставляет поддержку CMake, чтобы CMake упростил поиск и использование Boost для вашего проекта (см. Документацию на этой странице).
При сборке Boost вы увидите файлы конфигурации пакета CMake для каждой библиотеки Boost (обычно помещаются вместе со встроенными библиотеками в папку cmake
). Вы можете использовать find_package()
в режиме CONFIG
, чтобы найти эти файлы конфигурации пакета. Они предоставляют импортированные цели, такие как Boost::filesystem
, на которые вы можете напрямую ссылаться. Таким образом, если библиотека filesystem
отсутствует, вам не нужно просеивать список библиотек в переменной BOOST_LIBRARIES
, когда компиляция / компоновка не удалась. Вместо этого CMake сообщит вам, что библиотека отсутствует во время настройки CMake.
Кроме того, теперь необходимо автоматически разрешать зависимости библиотеки Boost. Поэтому, если вы используете filesystem
, вам больше не нужно явно вызывать библиотеку system
. Повышение должно разрешить эту зависимость для вас. С этими изменениями использование команды find_package()
может выглядеть следующим образом:
find_package(Boost CONFIG REQUIRED filesystem)
if(Boost_FOUND)
add_executable(${PROJECT_NAME} "execute_code.cpp")
target_link_libraries(executable PRIVATE Boost::filesystem)
endif()
Для чего бы вы ни стояли, вы можете запустить make VERBOSE=1
, чтобы увидеть подробный вывод на этапе соединения с проверьте , что все правильные библиотеки связаны. Вы должны увидеть, что библиотеки Boost filesystem
и system
связаны между собой, и вы можете убедиться, что они являются необходимыми stati c (.a
) библиотеками.