Я пытаюсь скомпилировать проект с большой базой кода и (возможно) не полностью обновленным CMakeLists.txt
. Программное обеспечение имеет несколько компонентов. В частности, вы отдельно строите ядро приложения, а затем приступаете к созданию различных расширений. Ядро также использует boost как одну из многих зависимостей.
Я успешно настроил и собрал основной компонент. Сейчас я строю расширение GUI. Настройка выполнена успешно, но make
завершается неудачно, в то время как связывается с бустом со следующими ошибками:
/usr/bin/ld: cannot find -lBoost::filesystem
/usr/bin/ld: cannot find -lBoost::system
Я могу исправить это с помощью вручную , вызывая gcc
с заменой -lBoost::filesystem
на -lboost_filesystem
.
Очевидно, что-то пошло не так с конфигурацией. Когда я проверяю переменные с помощью ccmake
, я могу подтвердить, что cmake указывает на правильный каталог boost. После исследования CMakeLists.txt
я обнаружил, что ссылка на ${Boost_FILESYSTEM_LIBRARY}
указана в исходном коде ядра, но не в расширении, например
SET(COMMON_LIBS
Registry
...
${Boost_FILESYSTEM_LIBRARY}
${Boost_SYSTEM_LIBRARY}
)
...
TARGET_LINK_LIBRARIES(Launcher ResourcesManager ${LIBBATCH_LIBRARIES} ${LIBXML2_LIBS} ${Boost_FILESYSTEM_LIBRARY} ${Boost_SYSTEM_LIBRARY})
...
TARGET_LINK_LIBRARIES(SalomeLauncher Launcher ${COMMON_LIBS})
Не могли бы вы указать мне правильное направление? В частности, такие проблемы указывают на проблемы с Boost, с ядром приложения или с расширением приложения? Любой совет на этом этапе был бы полезен.
Мотивация и настройка
Я пытаюсь скомпилировать SALOME на Arch Linux с cmake
версии 3.17.1.