① cmakelist.txt部分
一般情况:
cmake_minimum_required(VERSION 2.8.3)
project(cv_bridge_tutorial_pkg)
find_package(catkin REQUIRED COMPONENTS
cv_bridge
image_transport
roscpp
sensor_msgs
std_msgs
)
find_package( OpenCV REQUIRED )
catkin_package()
include_directories(
${catkin_INCLUDE_DIRS}
${OpenCV_INCLUDE_DIRS}
)
add_executable(sample_cv_bridge_node src/sample_cv_bridge_node.cpp)
target_link_libraries(sample_cv_bridge_node
${catkin_LIBRARIES}
${OpenCV_LIBRARIES}
)
include_directories(${catkin_INCLUDE_DIRS} ${OpenCV_INCLUDE_DIRS})
链接库:
find_package()的作用是让cmake找到依赖的库,像boost,opencv这种普遍在用的库,已经提供了CMake模块,运行时不需要单独的共享库,只需要写成 find_package( OpenCV REQUIRED )、find_package(Boost REQUIRED)就可以了。
但是有些功能就需要单独的库,比如boot线程实现或者大部分功能包依赖,写成find_package(Boost REQUIRED COMPONENTS thread)。
如果没有Cmake模块可用,但是库的开发包提供了pkg-config文件。写成
find_package(PkgConfig REQUIRED)
pkg_check_modules(GSTREAMER REQUIRED libgstreamer-0.10)
头文件包含:
include_directories(include ${Boost_INCLUDE_DIRS} ${GSTREAMER_INCLUDE_DIRS})