在完成slam第5章节的实例时,遇到问题如下:
(1)opencv的安装;
(2)cmake时的找不到opencv的路径问题;
第一个问题,我安装了2个版本的opencv一个是3.1.0一个实3.4.3,实际后来对程序编译时用的是后面的版本,3.1.0一直出现找不到一些文件的错误。在安装opencv时,我参考了https://blog.youkuaiyun.com/danmeng8068/article/details/770176。
在cmak时,一直找不到路径。在cmake文件里加了第9、10,但也不行。第21行是为了解决
[ 50%] Linking CXX executable joinMap
/usr/bin/ld: cannot find -lvtkproj4
collect2: error: ld returned 1 exit status
CMakeFiles/joinMap.dir/build.make:349: recipe for target 'joinMap' failed
make[2]: *** [joinMap] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/joinMap.dir/all' failed
make[1]: *** [CMakeFiles/joinMap.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
*** Failure: Exit code 2 ***
---------------------
这个问题加的。
1 cmake_minimum_required( VERSION 2.8 )
2 project( joinMap )
3
4 set( CMAKE_BUILD_TYPE Release )
5 set( CMAKE_CXX_FLAGS "-std=c++11 -O3" )
6
7 # opencv
8 find_package( OpenCV REQUIRED)
9 set(OpenCV_DIR /home/XXXX/opencv-3.1.0/release)
10 set(OpenCV_FOUND 1)
11 include_directories( ${OpenCV_INCLUDE_DIRS} )
12
13 # eigen
14 include_directories( "/usr/include/eigen3/" )
15
16 # pcl
17 find_package( PCL REQUIRED COMPONENT common io )
18 include_directories( ${PCL_INCLUDE_DIRS} )
19 add_definitions( ${PCL_DEFINITIONS} )
20
21 list(REMOVE_ITEM PCL_LIBRARIES "vtkproj4")
22 add_executable( joinMap joinMap.cpp )
23 target_link_libraries( joinMap ${OpenCV_LIBS} ${PCL_LIBRARIES} )
最后还是使用了cmake-gui完成的cmake,
至此,cmake完成,然后在build文件夹里make一下,会有一个0:15:0的warning,在cmakelist加第21行代码,可以解决。