江苏中小企业网站建设,什么网站可以做兼职设计,数据分析师报考官网,网站定位模板make 大家可能会很奇怪#xff0c;都什么年代了#xff0c;还学makefile#xff0c;cmake都有些过时了#xff0c;为什么还要再学这个呢#xff1f; 我是这么看待这个问题的#xff0c;cmake跨平台性还是很有有优势的#xff0c;有着多年积累的底蕴#xff0c;借助大模…make 大家可能会很奇怪都什么年代了还学makefilecmake都有些过时了为什么还要再学这个呢 我是这么看待这个问题的cmake跨平台性还是很有有优势的有着多年积累的底蕴借助大模型可以很好的利用这个工具。而cmake的原理就是自动生成makefile所以还是很值得学习makefile了解历史的。 makefile和CMakeLists 当只是编写一个文件的代码时直接使用命令运行很方便。但是一但项目复杂起来后就会难以管理这个时候使用自动化构建工具就会十分方便常用的构建工具有make和Cmake。make通过makefile对项目进行管理。Cmake通过配置生成适应各操作系统版本的makefile文件有着很好的跨平台性。
一、makefile 简单的编译运行命令g为例Cg会自动连接依赖库适用于C g 依赖文件 -o 目标文件 makefile的规则 目标文件 : 依赖文件 要执行的命令 hello: main.c message.cgcc main.c message.c -o hellomakefile特征 makefile的扩展名是.mk但是创建的时候直接忽略就好 执行的命令前面必须是tab键 实际情况应该是先编译后再链接推荐此种写法 伪目标不生成目标文件的目标只是一个标签最常用的就是clean和allclean常用来产生的临时文件 伪目标注意 不要和文件名重复因为伪目标运行的时候是make 伪目标这样的格式而也有这种类型的命令make file来指定目标的生成所以如果伪目标和文件名重复则会冲突 解决方案在开头加上.PHONY: 伪目标来显示告诉编译器这就是个伪目标 当需要同时执行多个可执行文件的生成的时候就可以使用all伪目标格式伪all: 目标文件 目标文件当然把all放在除.PHONY: 伪目标之后make直接执行默认也是为目标所指定的所有目标文件 同一种规则和依赖文件的简化写法 禁止执行的命令行输出打印在终端上 在对应命令加上就好 使用变量常常讲一些命令行参数以及源文件、目标文件、编译文件使用变量定义 特殊符号常说$其它特殊符号组成 $代表目标文件 $代表第一个依赖文件 $^代表所有依赖文件 通配符所有的cpp文件和o文件 更多的分支循环 make make是按照时间戳来判断是否更新目标文件的若时间戳不变则无法改变下图为windows系统与mac和linux有些许差异 如何运行伪目标 make 伪目标 参数 -f参数指定makefile的文件可以修改makefile的名称使用的时候加上-f指向修改好的文件就好 -n参数打印出要执行的命令但不会执行常用来用来调试 -C参数调用子模块的makefile
二、cmake中的CMakeLists 基本写法 cmake_mininum_required(VERSION 3.10)//最小版本指定
project(HelloWorld)//项目名字
set(Source main.c)//定义变量
add_executable(hello ${Source})
//目标文件 : 依赖文件
// 要执行的命令优势 跨平台性、跨编译器 其它功能指定编译选项、链接库、生成静态库、动态库等等
大家应该会很奇怪前面都说cmake好了要学习为什么就讲了这么点内容我觉得学习这些基础的框架就够了其它的依靠大模型的帮助会更有性价比。这里可能大家觉得我有些双标我觉得工具的魅力是它的底蕴是需要了解它但是真正用到实际的时候还是好的漂亮的代码最棒。大模型的代码比大部分写的代码都要合理因为其训练数据种包含着拥有无数高质量代码的github。