编程学习CMakeCMake 快速入门
Bohao ZhaoCMake 快速入门
前言
CMake 是一个
跨平台的自动化构建系统工具,主要用于生成项目的构建文件(如
Makefile、Visual Studio 工程、Ninja 等),以便编译和管理 C/C++
等语言的代码项目。
1 2 3 4 5 6
| cmake-template ├── CMakeLists.txt └── build └── include └── src └── main.cpp
|
CMakeLists.txt
文件用来告诉
CMake:项目有哪些源文件?需要哪些依赖库?生成什么目标(如可执行文件、静态库、动态库)?
1 2 3
| mkdir build cd build cmake ..
|
会在 build
目录生成平台特定的构建文件
例程
- 下面是宇树科技的功能包
controller
的
CMakeLists.txt
文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| cmake_minimum_required(VERSION 2.8.3) project(unitree_controller)
find_package(catkin REQUIRED COMPONENTS controller_manager genmsg joint_state_controller robot_state_publisher roscpp gazebo_ros std_msgs tf geometry_msgs unitree_legged_msgs )
find_package(gazebo REQUIRED)
catkin_package( CATKIN_DEPENDS unitree_legged_msgs )
include_directories( include ${Boost_INCLUDE_DIR} ${catkin_INCLUDE_DIRS} ${GAZEBO_INCLUDE_DIRS} )
link_directories(${GAZEBO_LIBRARY_DIRS}) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GAZEBO_CXX_FLAGS}")
add_library(${PROJECT_NAME} src/body.cpp )
add_dependencies(${PROJECT_NAME} unitree_legged_msgs_gencpp)
target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES} ${EXTRA_LIBS} )
add_executable(unitree_external_force src/external_force.cpp) target_link_libraries(unitree_external_force ${catkin_LIBRARIES})
add_executable(unitree_servo src/servo.cpp) target_link_libraries(unitree_servo ${PROJECT_NAME} ${catkin_LIBRARIES})
add_executable(unitree_move_kinetic src/move_publisher.cpp) target_link_libraries(unitree_move_kinetic ${catkin_LIBRARIES})
|