Cmakelist文件说明

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_28306361/article/details/85229224


因为在ROS编译的过程中,需要使用CMakeList,记录一下当中暂时需要了解的一些东西是什么意思。

cmake_minimum_required

每个catkin CMakeLists.txt文件必须以需要的CMake版本开始。 Catkin需要2.8.3或更高版本。

cmake_minimum_required(VERSION 2.8.3)

project

一个项目是由CMake项目功能指定的包的名称。 例如项目名称叫做opencv_test

project(opencv_test)

在CMake中,可以随时在CMake脚本中随时使用变量$ {PROJECT_NAME}来引用项目名称。

find_package

我们需要使用find_package函数指定需要找到哪些其他CMake包来构建我们的项目。 如果CMake通过find_package找到一个包,则会导致创建几个提供有关找到的包的信息的CMake环境变量。 这些环境变量可以在CMake脚本中稍后使用。 环境变量描述了包导出的头文件的位置,源文件的位置,包所依赖的库以及这些库的路径。简单理解,就算用来找到你依赖的包。

find_package(catkin REQUIRED COMPONENTS
  cv_bridge
  image_transport
  roscpp
  sensor_msgs
  std_msgs
)

find_package(OpenCV REQUIRED)

include_directories

在指定目标之前,您需要指定可以为所述目标找到资源的位置,特别是头文件和库,也就算说,这里设置的是一些头文件的路径

include_directories(include ${OpenCV_INCLUDE_DIRS})
include_directories(include ${catkin_INCLUDE_DIRS})

add_executable

用于设置需要编译生成的代码和可执行的文件,格式为:

add_executable(myProgram src/main.cpp src/some_file.cpp src/another_file.cpp)

这将构建一个名为myProgram的目标可执行文件,它由3个源文件构建:src / main.cpp,src / some_file.cpp和src / another_file.cpp。例如:

add_executable(opencv_test_node src/opencv_test_node.cpp)

target_link_libraries

用于设置链接库,很多功能需要使用系统或者第三方的库函数,通过该选项可以配置执行文件链接的库文件。其第一个参数和add_executable相同,是可执行文件的名称,后面依次列出需要链接的库。例如

target_link_libraries(opencv_test_node ${catkin_LIBRARIES} ${OpenCV_LIBRARIES})

add_dependencies

用于设置依赖项。就是说,在编译的过程中,如果需要用到构建消息/服务/操作的这类东西的话,需要用到这个函数。例如消息类型在编译的过程中会产生相应的代码语言,如果编译的可执行文件依赖这些动态生成的代码,则需要使用到add_dependencies函数。对于消息类型,添加

add_dependencies(talker beginner_tutorials_generate_messages_cpp)

如果使用PROJECT_NAME代替的话,就是:

add_dependencies(talker {PROJECT_NAME}_generate_messages_cpp)

猜你喜欢

转载自blog.csdn.net/qq_28306361/article/details/85229224