Невозможно найти запрошенные библиотеки Boost boost_lboost_thread - PullRequest
0 голосов
/ 24 мая 2018

Я пытался запустить проект Qt в среде CMake.В проекте Qt используются зависимости openCV и Boost.После успешного решения всех ошибок компиляции я боролся с ошибкой Boost.Как только я запускаю CMake, я получаю следующую ошибку:

Running "/ usr / bin / cmake / home / labrat / Desktop / cam-proc '-GCodeBlocks - Unix Makefiles'" в / home / labrat /Desktop / cam-proc / build.

**CMake Error at /usr/share/cmake-3.5/Modules/FindBoost.cmake:1677 (message):**
  Unable to find the requested Boost libraries.

  Boost version: 1.58.0

  Boost include path: /usr/include

  Could not find the following Boost libraries:

          boost_lboost_thread

  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):
  src/libCam/CMakeLists.txt:7 (find_package)**

Boost version: 1.58.0

Found the following Boost libraries:

       system
       thread
       filesystem
       chrono
       date_time
       atomic

-- Configuring incomplete, errors occurred!
See also "/home/labrat/Desktop/cam-proc/build/CMakeFiles/CMakeOutput.log".
See also "/home/labrat/Desktop/cam-proc/build/CMakeFiles/CMakeError.log".
*** cmake process exited with exit code 1.

Я проанализировал выданную ошибку CMake Error в /usr/share/cmake-3.5/Modules/FindBoost.cmake:1677 (сообщение): и открыл огромный FindBoost.cmake файл, и вот часть, в которой, согласно предупреждению, находится ошибка:

сообщение (SEND_ERROR "Невозможно найти запрошенныйПовышение уровня библиотек. \ N $ {Boost_ERROR_REASON} ")

  # Add pthread library on UNIX if thread component was found
  _Boost_consider_adding_pthreads(Boost_LIBRARIES ${Boost_LIBRARIES})
else()
  if(Boost_FIND_REQUIRED)
    message(SEND_ERROR "Unable to find the requested Boost libraries.\n${Boost_ERROR_REASON}")
  else()
    if(NOT Boost_FIND_QUIETLY)
      # we opt not to automatically output Boost_ERROR_REASON here as
      # it could be quite lengthy and somewhat imposing in its requests
      # Since Boost is not always a required dependency we'll leave this
      # up to the end-user.
      if(Boost_DEBUG OR Boost_DETAILED_FAILURE_MSG)
        message(STATUS "Could NOT find Boost\n${Boost_ERROR_REASON}")
      else()
        message(STATUS "Could NOT find Boost")
      endif()
    endif()
  endif()
endif()

Кроме того, поскольку в другой части сообщения об ошибке указано стек вызовов (сначала самый последний вызов): src / libCam / CMakeLists.txt: 7 (find_package) здесь я присоединяю CMakeLists.txt, созданный к проекту libcam, если это полезно:

cmake_minimum_required (VERSION 2.8.12)
project(libCam)
find_package(Qt5Widgets REQUIRED)
find_package(OpenCV REQUIRED)
find_package(Boost COMPONENTS filesystem lboost_thread system REQUIRED)
find_package(Boost COMPONENTS system thread filesystem REQUIRED)
find_package(Qt5PrintSupport REQUIRED)
###
# make sure we use c++11
###
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
elseif(COMPILER_SUPPORTS_CXX0X)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
else()
        message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

INCLUDE_DIRECTORIES( ${Boost_INCLUDE_DIR} )
INCLUDE_DIRECTORIES(${Qt5Widgets_INCLUDE_DIRS})

include_regular_expression("^([^b]|b[^o]|bo[^o]|boo[^s]|boos[^t]|boost[^/]).*$")

qt5_wrap_ui (UIS_HDRS  qtinclude/imagemanager.ui qtinclude/stereomanager.ui qtinclude/stereolistwidget.ui qtinclude/connectionmenu.ui)

file(GLOB LIBCAM_SRCS
    "include/*.h"
    "include/*.cpp"
    "include/*.hpp"
    "qtinclude/*.h"
    "qtinclude/*.cpp"
    "qtinclude/*.hpp"
)

file(GLOB UI_RC
  "qtinclude/qdarkstyle/*.qrc"
)

add_library(libCam SHARED ${LIBCAM_SRCS} ${UIS_HDRS} ${UI_RC})
target_include_directories (libCam  PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} )
target_link_libraries (libCam  Qt5::Widgets  Qt5::PrintSupport Qt5::Core Qt5::Quick Qt5::Sql Qt5::XmlPatterns ${Boost_LIBRARIES} ${OpenCV_LIBS} )

В течение последних двух дней я гуглял ошибку, ища информацию икод для решения этой проблемы, но у меня заканчиваются идеи.Я пытался загрузить boost 1.55, но он не работал, так как компилятор видит только boost 1.58.

Есть идеи, как пролить свет на этот вопрос?Я что-то пропускаю?

1 Ответ

0 голосов
/ 24 мая 2018

Проблема заключается в строке

find_package(Boost COMPONENTS filesystem lboost_thread system REQUIRED)

, которую следует изменить на

find_package(Boost COMPONENTS filesystem thread system REQUIRED)

или просто удалить, поскольку она эквивалентна следующей строке.

...