我正在尝试用cmake_3.5.0编译opencv_2.4.9以在Qt_5.3.2 MinGW中运行一个项目并且它一直显示这个错误:
Common needed but can't find boost
我选择“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...
)
有谁知道是什么解决了这个错误?
答案 0 :(得分:0)
首先,你可以把
set(Boost_DEBUG ON)
在命令之前
FIND_PACKAGE(Boost)
这为您提供了更多输出,并帮助我找到其他错误的来源。
接下来,我会尝试设置变量BOOST_LIBRARYDIR
和BOOST_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")
答案 1 :(得分:-1)
所以我解决这个问题的方法是先将Cmake作为
运行cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
project(pcd_write)
set(Boost_DEBUG ON)
set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_STATIC ON)
find_package(PCL 1.2 REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable (pcd_write pcd_write.cpp)
target_link_libraries (pcd_write ${PCL_LIBRARIES})
我看到底部
Boost include path: C:/Program Files/PCL 1.6.0/3rdParty/Boost/include
Could not find the following static Boost libraries:
boost_system
boost_filesystem
boost_thread
boost_date_time
boost_iostreams
我查看了那个文件夹,果然我错过了所有人的提升文件夹。
可能有一个更好的解决方案,但我刚刚将最新版本的Boost下载到我的计算机上并用新版本替换了整个C:/Program Files/PCL 1.6.0/3rdParty/Boost
文件夹,一切都适合我