catkin_make及cmakelists分析

catkin_make编译时,对工作空间所有packages的编译顺序是按拓扑遍历的,不是按字母也不是按创建时间。

单独编译某个package

以前一直认为单独编译某个package的命令是catkin_make --pkg package1,结果这样仍然会将工作空间中所有package的CMakeLists全检查一遍,花费时间相当长,实际的命令是这个:

1
catkin_make -DCATKIN_WHITELIST_PACKAGES="package1;package2"

可以编译一个或多个package,但是执行这个命令之后再catkin_make回发现它仍然只编译上次的package。恢复成编译所有package去掉引号里面的内容就行:

1
catkin_make -DCATKIN_WHITELIST_PACKAGES=""

build文档夹存放cmakemake相关的文档,devel文档夹存放编译生成的文档和目标,包括setup.sh

INSTALL

现在执行INSTALL命令不再是sudo make install了,而是catkin_make install,它相当于:

12345
cd ~/catkin_ws/build# If cmake hasn‘t already been calledcmake ../src -DCMAKE_INSTALL_PREFIX=../install -DCATKIN_DEVEL_PREFIX=../develmake大专栏  catkin_make及cmakelists分析ne">make install

这样执行完以后,工作空间会出现一个install文档夹,里面存放着编译生成的库文档,问题是它会把所有package的install都进行处理,如果想改变这个目录的位置,执行catkin_make -DCMAKE_INSTALL_PREFIX=path install。另外在CMakeLists中指定安装目录用SET(CMAKE_INSTALL_PREFIX < install_path >)

结果会在share/status_panel/cmake中生成两个cmake文档

这两个文档是做依赖包时必需的,比如roscpp就有相应的文档

链接ROS库

如果想使用ROS的头文档,必须在CMakeLists里加入下面内容,也就是链接ROS的头文档和库:

12345678
include_directories(# include ${catkin_INCLUDE_DIRS})find_package(roscpp)target_link_libraries(foo   ${catkin_LIBRARIES})

别忘了target_link_libraries在add_excutable之后。用message函数可以看到include文档夹和libraries文档夹如下:

在CMakeLists中加入catkin_package()才能在执行catkin_make后,才能在devel/lib中生成可执行文档

原文地址:https://www.cnblogs.com/liuzhongrong/p/12000152.html

时间: 2024-08-07 22:45:17

catkin_make及cmakelists分析的相关文章

CMakeLists代码分析

1 cmake_minimum_required (VERSION 2.8) 2 3 #指定项目的名称(CMAKE_PROJECT_NAME) 4 #在cmake中有两个预定义变量:< projectname >_BINARY_DIR以及< projectname >_SOURCE_DIR 5 6 project(NetLib) 7 8 if(NOT CMAKE_BUILD_TYPE) 9 set(CMAKE_BUILD_TYPE "Release") 10 e

ROS中的CMakeLists.txt

在ROS的编程过程中,如果CMakeLists.txt如果写不好,编译就很难成功.如果看不懂CMakeLists.txt那么很多错误你也不知道时什么回事.所以深入了解它是很有必要的.现在我们就来看看它. 我们使用cmake进行程序编译的时候,会根据CMakeLists.txt这个文件进行一步一步的处理,然后形成一个MakeFile文件,系统再通过这个文件的设置进行程序的编译. 我们可以先寻找一些cmake方面的东西进行一定的了解.ROS中的CMakeLists.txt也是基于普通的cmake的.

关于catkin_make xbo_face_msgs

可以catkin_make xbo_face_msgs_gencpp   单独编译生成 可以作为依莱库在后台生成. http://answers.ros.org/question/52744/how-to-specify-dependencies-with-foo_msgs-catkin-packages/ How to specify dependencies with "foo_msgs" catkin packages catkin messages services asked

catkin_make 浅析

引用自http://blog.csdn.net/zyh821351004/article/details/50388429 update:   catkin_tools --------------------------------- Catkin Command Line Tools: Installing catkin_tools:   sudo apt-get install python-catkin-tools CLI Comparison:catkin_make /catkin_m

catkin_make时报错找不到custom include custom.h

参考:https://answers.ros.org/question/195467/catkin-unable-to-include-custom-libraries/ 报错内容:/home/zhanghu/catkin_ws/src/map_img_proccess/src/map_img_load.cpp:1:26: fatal error: map_img_load.h: 没有那个文件或目录 #include "map_img_load.h" 解决办法: You should

make cmake catkin_make

在Linux下进行C语言编程,必然要采用GNU GCC来编译C源代码生成可执行程序. 一.GCC快速入门 Gcc指令的一般格式为:Gcc [选项] 要编译的文件 [选项] [目标文件] 其中,目标文件可缺省,Gcc默认生成可执行的文件名为:a.out 然后输入./a.out 便可运行得到结果 二.GCC的命令剖析--四步走 GCC编译C源码有四个步骤: 预处理-----> 编译 ----> 汇编 ----> 链接 1.预处理,生成预编译文件(.i文件): Gcc –E hello.c –

跟厂长学PHP内核(二):源码分析的环境与工具

本文主要介绍分析源码的方式,其中包含环境的搭建.分析工具的安装以及源码调试的基本操作. 一.工具清单 PHP7.0.12 GDB CLion 二.源码下载及安装 $ wget http://php.net/distributions/php-7.0.12.tar.gz $ tar zxvf php-7.0.12.tar.gz $ cd php-7.0.12/ $ ./configure --prefix=/usr/local/php7 --enable-debug --enable-fpm $

【刘文彬】【精解】EOS标准货币体系与源码实现分析

原文链接:醒者呆的博客园,https://www.cnblogs.com/Evsward/p/eos-exchange.html EOS智能合约中包含一个exchange合约,它支持用户创建一笔交易,是任何两个基本货币类型之间的交易.这个合约的作用是跨不同币种(都是EOS上的标准货币类型)的,通过各自与EOS主链价值进行锚定,然后再相互发起交易兑换.要搞清楚的是,这与区块链"传统的"交易所并不一样,那个主要是集中在交易撮合上面,而且必须是同一币种. 关键字:EOS token 经济模型

爱奇艺、优酷、腾讯视频竞品分析报告2016(一)

1 背景 1.1 行业背景 1.1.1 移动端网民规模过半,使用时长份额超PC端 2016年1月22日,中国互联网络信息中心 (CNNIC)发布第37次<中国互联网络发展状况统计报告>,报告显示,网民的上网设备正在向手机端集中,手机成为拉动网民规模增长的主要因素.截至2015年12月,我国手机网民规模达6.20亿,有90.1%的网民通过手机上网. 图 1  2013Q1~2015Q3在线视频移动端和PC端有效使用时长份额对比 根据艾瑞网民行为监测系统iUserTracker及mUserTrac