当前位置:网站首页>ROS2前置基础教程 | 小鱼教你用CMake依赖查找流程
ROS2前置基础教程 | 小鱼教你用CMake依赖查找流程
2022-06-22 13:48:00 【鱼香ROS】
本系列教程作者:小鱼
公众号:鱼香ROS
QQ交流群:139707339
教学视频地址:小鱼的B站
完整文档地址:鱼香ROS官网
版权声明:如非允许禁止转载与商业用途。
上面我们用g++、make、cmake三种方式来编译ros2的C++节点。用cmake虽然成功了,但是CMakeLists.txt的内容依然非常的臃肿,我们需要将其进一步的简化。
1.优化CMakeList.txt
将上面的CmakLists.txt改成下面的样子
cmake_minimum_required(VERSION 3.22)
project(first_node)
find_package(rclcpp REQUIRED)
add_executable(first_node first_ros2_node.cpp)
target_link_libraries(first_node rclcpp::rclcpp)
接着继续生成和编译
cmake ..
make

是不是非常的神奇,为什么可以浓缩成那么短的几句指令呢?
2.find_package查找路径
find_package查找路径对应的环境变量如下。
<package>_DIR
CMAKE_PREFIX_PATH
CMAKE_FRAMEWORK_PATH
CMAKE_APPBUNDLE_PATH
PATH
打开终端,输入指令:
echo $PATH
结果
PATH=/opt/ros/humble/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
观察PATH变量,你会发现/opt/ros/humble/bin赫然在其中,PATH中的路径如果以bin或sbin结尾,则自动回退到上一级目录,接着检查这些目录下的
<prefix>/(lib/<arch>|lib|share)/cmake/<name>*/ (U)<prefix>/(lib/<arch>|lib|share)/<name>*/ (U)<prefix>/(lib/<arch>|lib|share)/<name>*/(cmake|CMake)/ (U)
cmake找到这些目录后,会开始依次找<package>Config.cmake或Find<package>.cmake文件。找到后即可执行该文件并生成相关链接信息。
打开/opt/ros/humble/share/rclcpp/cmake你会发现rclcppConfig.cmake就在其中。
3.总结
本节小鱼带你通过多种方式进行节点的编译,主要是让你了解C++编译工具cmake以及其路径查找规则,以后在学习生涯中再遇到undefined reference to xxxxx和 No such file or directory就再也不用慌张了。
ROS2前置教程汇总:
ROS2进阶教程汇总:
边栏推荐
猜你喜欢

一文彻底弄懂工厂模式(Factory)

Open source SPL redefines OLAP server

What does password security mean? What are the password security standard clauses in the ISO 2.0 policy?
![Dessert mall management system based on SSH framework [source code + database]](/img/6d/6d8ad081de9b0c0ab8c2f8aba1dcf0.png)
Dessert mall management system based on SSH framework [source code + database]

好风凭借力 – 使用Babelfish 加速迁移 SQL Server 的代码转换实践
![[live broadcast review] battle code pioneer phase VI: build a test subsystem and empower developers to provide](/img/46/d36ae47c3d44565d695e8ca7f34980.jpg)
[live broadcast review] battle code pioneer phase VI: build a test subsystem and empower developers to provide

加密市场进入寒冬,是“天灾”还是“人祸”?

No wonder the postgraduate entrance examination is so hot. These are the "hidden benefits" of Postgraduates!

Live broadcast goes to sea | domestic live broadcast room produces explosive products again. How can "roll out" win the world

keil MDK 中使用虚拟串口调试串口
随机推荐
[graduation project] Research on emotion analysis based on semi supervised learning and integrated learning
网站存在的价值是什么?为什么要搭建独立站
那些令人懵逼的用户态&内核态
Bochs software usage record
Flutter video Le lecteur écoute et joue automatiquement la prochaine chanson
RealNetworks vs. 微软:早期流媒体行业之争
Groovy list operation
难怪考研热度这么高,这些是研究生才有的“隐藏福利”!
Database connection pool: Code Directory
Recommendation of individual visa free payment scheme
本周四晚19:00战码先锋第7期直播丨三方应用开发者如何为开源做贡献
口令安全是什么意思?等保2.0政策中口令安全标准条款有哪些?
树结构二叉树
网络安全的五大特点有哪些?五大属性是什么?
Can Google bidding account detect the global market?
全新混合架构iFormer!将卷积和最大池化灵活移植到Transformer
Mysql学习笔记2022
晒晒我这两年的私活单,业余时间月入6k,有份副业也太香啦
C language student management system (open source)
Verification code is the natural enemy of automation? See how the great God solved it