因为需要编译,所以必须要掌握cmakelist语法,以我所用到的rplidar的cmakelist.txt举例
以下是一个简单的启动rplidar的rplidarNode的cmakelist文件
cmake_minimum_required(VERSION 2.8.3)
project(rplidar_ros)
这里会生成
${rplidar_ros_BINARY_DIR} :就是cmake要(构建)编译我们的项目(node.c)的具体路径。这里当然就是build。
${rplidar_ros_SOURCE_DIR} :就是我们项目的源码的具体路径,这里当然是项目的根目录。
set(RPLIDAR_SDK_PATH "./sdk/")
//set命令为设定该cmakelist文件中的变量值,可以理解为RPLIDAR_SDK_PATH=./sdk/
FILE(GLOB RPLIDAR_SDK_SRC
"${RPLIDAR_SDK_PATH}/src/arch/linux/*.cpp"
"${RPLIDAR_SDK_PATH}/src/hal/*.cpp"
"${RPLIDAR_SDK_PATH}/src/*.cpp"
)
//file命令为
find_package(catkin REQUIRED COMPONENTS
roscpp
rosconsole
sensor_msgs
)
//find_package命令为自动去系统中寻找所指定的包,相当于引用包吧
include_directories(
${RPLIDAR_SDK_PATH}/include
${RPLIDAR_SDK_PATH}/src
${catkin_INCLUDE_DIRS}
)
//include_directories命令为本包引用的文件夹目录,即添加头文件目录
catkin_package()
add_executable(rplidarNode src/node.cpp ${RPLIDAR_SDK_SRC})
target_link_libraries(rplidarNode ${catkin_LIBRARIES})
//添加要执行的编译命令,在这里翻译为通过借助RPLIDAR_SDK_SRC将src里的node.cpp源文件编译成为名叫rplidarNode的可执行文件。
add_executable(rplidarNodeClient src/client.cpp)
target_link_libraries(rplidarNodeClient ${catkin_LIBRARIES})
//这里同上只不过生成的是rplidarNodeClient
install(TARGETS rplidarNode rplidarNodeClient
ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
install(DIRECTORY launch rviz sdk
DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
USE_SOURCE_PERMISSIONS
)
//install命令为将编译生成的文件分类安装到制定的目录路径。可分成好几类文件的安装命令
以上是我自己找的一个最基础的cmakelist文件,还有一些命令没有涉及,需要在之后的练习中慢慢去学习。