CMake не может найти библиотеки Boost: файл, поток, дата и время, iostreams, система - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь собрать PCL из исходного кода, но CMake не может найти некоторые библиотеки.Однако, когда я проверяю библиотеки там.Я знаю, что об этом уже много спрашивали, но я только начинаю с CMake, я искал в Интернете несколько дней и не могу найти решение, которое работает.Я чувствую, что упускаю что-то, что любая помощь будет признательна

Так что я написал это в моем CMakeLists.txt, как другие предлагали

cmake_minimum_required(VERSION 3.13)
set(Boost_ADDITIONAL_VERSIONS "1.67.0")
set(BOOST_ROOT "C:/local/boost_1_67_0/boost")

set(BOOST_INCLUDEDIR "C:/local/boost_1_67_0/")
set(BOOST_LIBRARYDIR "C:/local/boost_1_67_0/lib64-msvc-14.0")

set (Boost_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME OFF)
find_package(Boost 1.67.0)

, но я все еще продолжаю получать ту же ошибку:

     CMake Error at C:/Program Files/CMake/share/cmake-3.13/Modules/FindBoost.cmake:2100 (message):
  Unable to find the requested Boost libraries.

  Boost version: 1.67.0

  Boost include path: C:/local/boost_1_67_0

  Could not find the following static Boost libraries:

          boost_filesystem
          boost_thread
          boost_date_time
          boost_iostreams
          boost_system

  Some (but not all) of the required Boost libraries were found.  You may
  need to install these additional Boost libraries.  Alternatively, set
  BOOST_LIBRARYDIR to the directory containing Boost libraries or BOOST_ROOT
  to the location of Boost.
Call Stack (most recent call first):
  cmake/pcl_find_boost.cmake:36 (find_package)
  CMakeLists.txt:428 (include)

Честно говоря, я приму любые предложения, которые я могу попробовать на этом этапе.И не стесняйтесь комментировать или сообщать, если я могу предоставить любую другую полезную информацию, о которой я не думаю.Спасибо

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Как и предполагал timko.mate, find_package с компонентами - это правильный путь.

Однако вы должны рассмотреть возможность использования API на основе цели:

target_link_libraries(your_exe PUBLIC Boost::system Boost::filesystem)

Также, чтобысделать CMake находит Boost, вы должны настроить свой префикс путиОбычно это делается при вызове cmake в вашем проекте:

cmake -DMAKE_PREFIX_PATH=c:/local/ ..

Таким образом, в файлах cmake не должно быть жестко заданного пути.

0 голосов
/ 19 февраля 2019

У меня была такая же проблема пару месяцев назад.Это решило мою проблему.

find_package(Boost 1.67.0 COMPONENTS system filesystem REQUIRED)
include_directories(${Boost_INCLUDE_DIRS})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...