CMakeLists.txt 一些函数应用举例
1、ROS CMakeLists文件配置
# 指定版本
cmake_minimum_required(VERSION 3.0.2)
# 添加工程名称
PRO_name 工程名称 新建文件名称
project(PRO_name)
# 指定C++ 版本
add_compile_options(-std=c++17)
# 设置C++ debug工具
set(CMAKE_BUILD_TYPE "Debug")
set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb -std=c++17")
set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall -std=c++17")
add_definitions(-std=c++17)
#添加 ros 支持包
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
)
# 设置头文件路径
# INC_LIST 定义变量名
# ${PROJECT_SOURCE_DIR}/include 参数工程名称相对路径
set(INC_LIST ${PROJECT_SOURCE_DIR}/include)
# 包含头文件
include_directories(${INC_LIST})
include_directories(${catkin_INCLUDE_DIRS} ${PCL_INCLUDE_DIRS})
## The catkin_package macro generates cmake config files for your package
## 宏为包生成cmake配置文件
## Declare things to be passed to dependent projects
## 声明要传递给依赖项目的内容
## INCLUDE_DIRS: uncomment this if your package contains header files
## 如果包包含头文件,请取消对此的注释
## LIBRARIES: libraries you create in this project that dependent projects also need
## 在此项目中创建的依赖项目也需要的库
## CATKIN_DEPENDS: catkin_packages dependent projects also need
## 依赖项目也需要
## DEPENDS: system dependencies of this project that dependent projects also need
## 依赖项目也需要的此项目的系统依赖项
catkin_package(
# INCLUDE_DIRS include
# LIBRARIES Elfin_controllers_app
CATKIN_DEPENDS moveit_core moveit_ros_planning moveit_ros_planning_interface roscpp rospy tf tf_conversions
DEPENDS system_lib
)
# 线程编程
link_libraries(pthread)
# 指定头文件的其他位置
include_directories(
include
${catkin_INCLUDE_DIRS}
)
#添加执行
add_executable(controller ${SRC_LIST}/controller.cpp)
# 添加其他编译文件路径
# add_subdirectory(${PROJECT_SOURCE_DIR}/src)
## 添加链接库
target_link_libraries(controller
${catkin_LIBRARIES}
)
2、C++ 工程文件配置
# 设置源文件路径列表
# ./Trajectory 路径 SRC_LIST
aux_source_directory(./Trajectory SRC_LIST)
# 生成静态链接库
add_library(OpenGA STATIC ${SRC_LIST})
# 设置头文件路径
set(INC_LIST ./include)
# 包含头文件
include_directories(${INC_LIST})
# 线程编程
link_libraries(pthread)
3、C++ 工程文件配置2
# 设置源文件路径列表
aux_source_directory(. SRC_LIST)
# 生成静态库的链接
add_library(Trajectory STATIC ${SRC_LIST})
# ros 包
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
moveit_msgs
moveit_ros_perception
moveit_ros_planning_interface
trajectory_msgs)
# catkin_package
catkin_package(CATKIN_DEPENDS
roscpp rospy moveit_core moveit_ros_planning_interface)
# 将链接向上传递
set(tmp
$<TARGET_OBJECTS:Trajectory>
PARENT_SCOPE)
参考网站:
1、https://blog.csdn.net/afei__/article/details/81201039