Почему CMake не может найти мои библиотеки Boost в Ubuntu 18.04? - PullRequest
0 голосов
/ 05 ноября 2019

Это сводит меня с ума. По моему CMakeLists.txt у меня есть:

find_package(Boost 1.63.0 REQUIRED SYSTEM)

Результат:


[0/1] Re-running CMake...
Build type: Release
CMake Error at /usr/share/cmake-3.10/Modules/FindBoost.cmake:1947 (message):
  Unable to find the requested Boost libraries.

  Boost version: 1.65.1

  Boost include path: /usr/include

  Could not find the following Boost libraries:

          boost_system

Но:

$ locate libboost_system
/usr/lib/x86_64-linux-gnu/libboost_system.a
/usr/lib/x86_64-linux-gnu/libboost_system.so
/usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1

И:

$ sudo apt install libboost-all-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
libboost-all-dev is already the newest version (1.65.1.0ubuntu1).

Ранее я использовал самоскомпилированный 1.63.0, но я удалил все файлы из /usr/local/lib и /usr/local/include. Может быть, это все еще каким-то образом здесь преследует ..?

Если я найду Boost вот так (без системы):

find_package(Boost 1.63.0 REQUIRED)

.. тогда настройка завершится успешно, но победит 't ссылка на ${Boost_SYSTEM_LIBRARY}:

/usr/bin/ld: src/app/CMakeFiles/app.dir/application.cpp.o: undefined reference to symbol '_ZN5boost6system15system_categoryEv'
//usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

1 Ответ

0 голосов
/ 05 ноября 2019

Проблема заключалась в том, что вам нужно system вместо SYSTEM, хотя он жалуется на отсутствие boost_system также при использовании SYSTEM. Я нахожу, что бит сбивает с толку:

find_package(Boost 1.63.0 REQUIRED system)

...