导航

CV学习日志:CV开发之常用库配置

Posted on 2020-01-30 00:03  dzyBK  阅读(312)  评论(0编辑  收藏  举报

         本篇给出基于CV开发常用库的CMake配置模板,给出的CMake配置基于ubuntu20.04,开发库除Webots(Webots采用默认安装路径)外都是通过apt-get安装,详见《CV学习日志:系统安装与环境配置》。

         给出的CMake工程假设了一个自定义库,即基于ROS2自编译的库,colon编译安装路径是/root/app/ros2ex/out/install。

 

         以下是CMake模板的详细代码,尤其要注意配置了Threads和对QT5添加了特殊配置。

 1 ###I.Global####################################################################
 2 cmake_minimum_required(VERSION 3.5)
 3 project(acv)
 4 set(CMAKE_CXX_STANDARD 14)
 5 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 6 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/out/$<0:>)
 7 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/out/$<0:>)
 8 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/out/$<0:>)
 9 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/header)
10 
11 ###II.UNIX####################################################################
12 if(UNIX)
13 set(THREADS_PREFER_PTHREAD_FLAG ON)
14 find_package(Threads REQUIRED)
15 message("Platform: UNIX\n\nPlatform: UNIX\n\nPlatform: UNIX\n\nPlatform: UNIX\n\nPlatform: UNIX\n\nPlatform: UNIX\n\n")
16 
17 #1.Qt5
18 include_directories(/usr/include/x86_64-linux-gnu/qt5)
19 file(GLOB Qt5_LIBS /usr/lib/x86_64-linux-gnu/libQt5*.so.5) #No Qt5Bootstrap and Qt5Debug
20 add_compile_definitions(QT_WIDGETS_LIB) #Omit QT_NO_VERSION_TAGGING because of not installing Qt manually
21 add_compile_options(-fPIC)
22 
23 #2.Eigen3 Gflags Glog Ceres Sophus Asio CLI11 Spdlog Cereal
24 include_directories(/usr/include)
25 include_directories(/usr/include/eigen3)
26 file(GLOB Gflags_LIBS /usr/lib/x86_64-linux-gnu/libgflags*.so)
27 file(GLOB Glog_LIBS /usr/lib/x86_64-linux-gnu/libglog*.so)
28 file(GLOB Ceres_LIBS /usr/lib/libceres*.so)
29 
30 #3.OpenCV
31 include_directories(/usr/include/opencv4)
32 file(GLOB OpenCV_LIBS /usr/lib/x86_64-linux-gnu/libopencv*.so)
33 
34 #4.ROS2 ROS2EX Webots
35 include_directories(/opt/ros/foxy/include /root/app/ros2ex/out/install/include)
36 include_directories(/usr/local/webots/include/controller/cpp /usr/local/webots/include/controller/c)
37 file(GLOB ROS2_LIBS LIST_DIRECTORIES false /opt/ros/foxy/lib/*.so)
38 file(GLOB ROS2EX_LIBS LIST_DIRECTORIES false /root/app/ros2ex/out/install/lib/*.so)
39 file(GLOB Webots_LIBS LIST_DIRECTORIES false /usr/local/webots/lib/controller/*.so)
40 
41 #5.Octomap OpenGV
42 include_directories(/usr/include)
43 file(GLOB Octomap_LIBS /usr/lib/x86_64-linux-gnu/liboctom*.so)#octomap&octomath
44 set(Octomap_LIBS ${Octomap_LIBS} /usr/lib/x86_64-linux-gnu/liboctovis.so)
45 set(Octomap_LIBS ${Octomap_LIBS} /usr/lib/x86_64-linux-gnu/libdynamicedt3d.so)
46 
47 #8.AllLibs
48 set(ALL_LIBS ${Qt5_LIBS} ${Gflags_LIBS} ${Glog_LIBS} ${Ceres_LIBS} ${OpenCV_LIBS} ${ROS2_LIBS} ${ROS2EX_LIBS} ${Webots_LIBS} ${Octomap_LIBS} ${OpenGV_LIBS})
49 link_libraries(${ALL_LIBS})
50 message("ALL_LIBS: ${ALL_LIBS}")
51 
52 ###9.1QtSim
53 set(qtsimcpp ${CMAKE_SOURCE_DIR}/source/qtsim/qtsim.cpp)
54 add_executable(qtsim ${qtsimcpp})
55 target_link_libraries(qtsim Threads::Threads)
56 
57 ###9.2ROSSim
58 set(rossimcpp ${CMAKE_SOURCE_DIR}/source/rossim/rossim.cpp)
59 add_executable(rossim ${rossimcpp})
60 target_link_libraries(rossim Threads::Threads)
61 
62 ###9.3WbtSim
63 set(wbtsimcpp ${CMAKE_SOURCE_DIR}/source/wbtsim/wbtsim.cpp)
64 add_executable(wbtsim ${wbtsimcpp})
65 target_link_libraries(wbtsim Threads::Threads)
66 endif(UNIX)