Невозможно установить связь с импортированными целями cmake - PullRequest
0 голосов
/ 27 апреля 2020

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

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