cmakelists.txt为什么这么写,为什么有这些,能不能推导出来,而不是死记。所以 gcc g++ make makefile cmake cmakelists catkin 本质都是一个东西

本文主要是介绍cmakelists.txt为什么这么写,为什么有这些,能不能推导出来,而不是死记。所以 gcc g++ make makefile cmake cmakelists catkin 本质都是一个东西,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

cmakelists为什么这么写,为什么有这些,能不能推导出来,而不是死记。

为什么添加话题也要在这里面写?

名称

要找链接库。

要生成可执行文件

这几个是好理解的。

package.xml里面写的编译依赖  运行依赖需要和 cmakelists.txt里面的相对应么。

看了这篇了解makefile的本质之后可能就好些

https://blog.csdn.net/sinat_16643223/article/details/119981757

 14:09:01
感觉还是makefile本质清晰

 14:09:16
比cmakelists简洁多了

 这样再推cmakelists就好些了。

cmakelists最后也是要生成makefile,所以最后的本质都是去链接一些文件生成可执行文件。

本质还是gcc g++那些语句

所以  gcc  g++  make  makefile  cmake  cmakelists  catkin_make  本质都是一个东西!!!!!!!!!

你之前在Ubuntu上弄TCP UDP编程的时候是自己亲自弄过g++的对吧,把cpp文件生成可执行文件。

cmakelists那么多东西不本质还是为了找到那些文件然后链接起来么,只不过换个方式表达。

为什么ROS功能包的cmakelists里面要单独写话题,因为这些自定义话题也是需要编译的,就是那些msg文件,需要编译的,生成h文件等等的,可能他们和cpp文件的编译有些区别所以单独拿出来写,我个人这么推测的。

可能找不同库的方式不一样所以写起来的语句也不一样,总之,最优要编译成功,肯定要把该有的库都链接起来的。都得在cmakelists里面写出来的。你清楚本质之后应该可以很明确这一点。

就不光知其然而知其所以然,就不用死记死背那些规则了。

所以你再自己写功能包的时候,自己用了哪些第三方库自己心里要有数,并且到cmakelists里面去添加。就是这么个道理。

现在看这个思路就比较清晰

https://gitee.com/maxibooksiyi/gpst265fusion/blob/master/src/global_fusion/CMakeLists.txt

上面的这个cmakelists结合下面这篇博文看看好很多

https://blog.csdn.net/sinat_16643223/article/details/114029013

什么STL  opencv  boost都是常用的库,这些库都需要会链接

还要会链接其他功能包,其他的库等等的。

我看下这个所用第三方库的cpp的内容,里面都没有main函数

https://gitee.com/maxibooksiyi/gpst265fusion/tree/master/src/global_fusion/ThirdParty/GeographicLib/src

 首先我觉得可以明确,第三方库,不管你是什么乱七八糟的库,还是什么Lib库,应该都是cpp和头文件组成的。首先明确这个本质,不然总是感觉他们很神秘一样。

windows里面用那些IDE要配置环境变量一个道理不然找不到那些库,现在清楚一个C++程序的本质之后很多东西就好理解。以前只知道机械地按照教程添加那些路径,死记,不知道为什么。

现在,你程序里面用了opencv库,那么你编译的时候得让你的程序找得到那个opencv,现在再去看windows下配置opencv的那些是不是好理解些了,不用死记了

windows下的visual studio就有编辑链接库的选项,现在应该明白是什么意思了吧是不是,以前只知道照着教程弄。

下面拍自《opencv4 快速入门》  P9

现在让你去windows上弄opencv,配置环境啥的我觉得你应该不会害怕了对吧。

包括我现在叫你去写一个STM32的工程代码,你现在不应该说死记一个工程目录是有哪些。而是用了哪些库调用了哪些库就有哪些,而不是死记了。

还有程序怎么链接不同版本的opencv  (《视觉SLAM十四讲》里面有讲)

不同版本的Python等等。

这篇关于cmakelists.txt为什么这么写,为什么有这些,能不能推导出来,而不是死记。所以 gcc g++ make makefile cmake cmakelists catkin 本质都是一个东西的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/506939

相关文章

Python如何将大TXT文件分割成4KB小文件

《Python如何将大TXT文件分割成4KB小文件》处理大文本文件是程序员经常遇到的挑战,特别是当我们需要把一个几百MB甚至几个GB的TXT文件分割成小块时,下面我们来聊聊如何用Python自动完成这... 目录为什么需要分割TXT文件基础版:按行分割进阶版:精确控制文件大小完美解决方案:支持UTF-8编码

Python3脚本实现Excel与TXT的智能转换

《Python3脚本实现Excel与TXT的智能转换》在数据处理的日常工作中,我们经常需要将Excel中的结构化数据转换为其他格式,本文将使用Python3实现Excel与TXT的智能转换,需要的可以... 目录场景应用:为什么需要这种转换技术解析:代码实现详解核心代码展示改进点说明实战演练:从Excel到

Linux编译器--gcc/g++使用方式

《Linux编译器--gcc/g++使用方式》文章主要介绍了C/C++程序的编译过程,包括预编译、编译、汇编和链接四个阶段,并详细解释了每个阶段的作用和具体操作,同时,还介绍了调试和发布版本的概念... 目录一、预编译指令1.1预处理功能1.2指令1.3问题扩展二、编译(生成汇编)三、汇编(生成二进制机器语

电脑没有仿宋GB2312字体怎么办? 仿宋GB2312字体下载安装及调出来的教程

《电脑没有仿宋GB2312字体怎么办?仿宋GB2312字体下载安装及调出来的教程》仿宋字体gb2312作为一种经典且常用的字体,广泛应用于各种场合,如何在计算机中调出仿宋字体gb2312?本文将为您... 仿宋_GB2312是公文标准字体之一,仿China编程宋是字体名称,GB2312是字php符编码标准名称(简

Golan中 new() 、 make() 和简短声明符的区别和使用

《Golan中new()、make()和简短声明符的区别和使用》Go语言中的new()、make()和简短声明符的区别和使用,new()用于分配内存并返回指针,make()用于初始化切片、映射... 详细介绍golang的new() 、 make() 和简短声明符的区别和使用。文章目录 `new()`

VMWare报错“指定的文件不是虚拟磁盘“或“The file specified is not a virtual disk”问题

《VMWare报错“指定的文件不是虚拟磁盘“或“Thefilespecifiedisnotavirtualdisk”问题》文章描述了如何修复VMware虚拟机中出现的“指定的文件不是虚拟... 目录VMWare报错“指定的文件不是虚拟磁盘“或“The file specified is not a virt

Python按条件批量删除TXT文件行工具

《Python按条件批量删除TXT文件行工具》这篇文章主要为大家详细介绍了Python如何实现按条件批量删除TXT文件中行的工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.简介2.运行效果3.相关源码1.简介一个由python编写android的可根据TXT文件按条件批

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

uva 10014 Simple calculations(数学推导)

直接按照题意来推导最后的结果就行了。 开始的时候只做到了第一个推导,第二次没有继续下去。 代码: #include<stdio.h>int main(){int T, n, i;double a, aa, sum, temp, ans;scanf("%d", &T);while(T--){scanf("%d", &n);scanf("%lf", &first);scanf

解决Office Word不能切换中文输入

我们在使用WORD的时可能会经常碰到WORD中无法输入中文的情况。因为,虽然我们安装了搜狗输入法,但是到我们在WORD中使用搜狗的输入法的切换中英文的按键的时候会发现根本没有效果,无法将输入法切换成中文的。下面我就介绍一下如何在WORD中把搜狗输入法切换到中文。