CMake 错误:common 是必需的,但没有找到 boost

Had*_*had 5 c++ qt boost cmake

我正在尝试使用 cmake_3.5.0 编译 opencv_2.4.9 以在 Qt_5.3.2 MinGW 中运行一个项目,但它一直显示此错误:

常见需要但找不到提升

我在配置窗口中选择“MinGW Makefiles”作为生成器并“指定本机编译器”。我定义了 BOOST_ROOT 环境变量,这是我的 CmakeLists.txt:

cmake_minimum_required(VERSION 2.8 FATAL_ERROR)

SET(sampleName MyApp)

set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_STATIC ON)
set(Boost_COMPILER -gcc49)
SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "C:/Program Files/PCL 1.6.0/3rdParty/Boost/include")
SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "C:/Program Files/PCL 1.6.0/3rdParty/Boost/lib")

find_package(PCL 1.6.0 REQUIRED)
FIND_PACKAGE(Boost)
IF (Boost_FOUND)
    INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})
    ADD_DEFINITIONS( "-DHAS_BOOST" )
ENDIF()

FIND_PACKAGE(MRPT REQUIRED base;bayes;obs;gui)

include_directories(${PCL_INCLUDE_DIRS})
include_directories("C:/Program Files/PCL 1.6.0/3rdParty/Boost/include")

link_directories(${PCL_LIBRARY_DIRS})
link_directories("C:/Program Files/PCL 1.6.0/3rdParty/Boost/lib")

add_definitions(${PCL_DEFINITIONS})

add_executable (MyApp Local.cpp part.h grab.h interface.h test.cpp test.h)

target_link_libraries (MyApp ${PCL_LIBRARIES} libeng.lib libmx.lib libmex.lib libmat.lib Aria.lib winmm.lib wsock32.lib)

TARGET_LINK_LIBRARIES(${sampleName}
${MRPT_LIBS} # This is filled by FIND_PACKAGE(MRPT ...)
"" # Optional extra libs...
)
Run Code Online (Sandbox Code Playgroud)

有谁知道是什么解决了这个错误?

kri*_*ian 0

首先,你可以把

set(Boost_DEBUG ON)
Run Code Online (Sandbox Code Playgroud)

在命令之前

FIND_PACKAGE(Boost)
Run Code Online (Sandbox Code Playgroud)

这为您提供了更多输出,并帮助我找到其他错误的根源。

接下来,我会尝试设置变量BOOST_LIBRARYDIRBOOST_INCLUDEDIR,例如

set(BOOST_LIBRARYDIR "C:/Program Files/PCL 1.6.0/3rdParty/Boost/lib")
set(BOOST_INCLUDEDIR "C:/Program Files/PCL 1.6.0/3rdParty/Boost/include")
Run Code Online (Sandbox Code Playgroud)

  • 我将这些行添加到文件中,但仍然有错误。您是否有这样的项目的示例 CMakeList.txt 文件?这是我第一次使用 CMake,我不知道它到底是如何工作的。 (2认同)