多文件编译
一.文件组成:
- .h头文件,存放用到的库文件、各种函数声明、宏定义
- .c源文件,存放代码,大致分为main.c和其他function.c,main.c放main函数,同时要引用头文件
- Makefile文件
二. Makefile的基本语法(少用)
-
变量定义:在Makefile中我们要定义一系列的变量,变量一般都是字符串,这个有点像C语言中的宏,当Makefile被执行时,其中的变量都会被扩展到相应的引用位置上。
-
显式规则:显式规则说明了如何生成一个或多的的目标文件。这是由Makefile的书写者明显指出,要生成的文件,文件的依赖文件,生成的命令。 刚才写的全部都是显示规则。
-
隐晦规则:由于我们的make有自动推导的功能,所以隐晦的规则可以让我们比较粗糙地简略地书写Makefile,这是由make所支持的。
-
文件指示:其包括了三个部分: 一个是在一个Makefile中引用另一个Makefile, 就像C语言中的include一样; 另一个是指根据某些情况指定Makefile中的有效部分, 就像C语言中的预编译#if一样; 还有就是定义一个多行的命令.
-
注释:与python相同,#后面的均是注释内容
-
一些预定义变量的介绍:
- $* 不包含扩展名的目标文件名称。
- $+ 所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。
- $< 第一个依赖文件的名称。
- $? 所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚。
- $@ 目标的完整名称。
- $^ 所有的依赖文件,以空格分开,不包含重复的依赖文件。
- $% 如果目标是归档成员,则该变量表示目标的归档成员名称
-
参考代码:
1 | CXX = gcc #确定编译器是gcc,先把它写在一个变量里,后面如果想要改编译器的话直接改CXX这个变量的value就可以 |
三.Cmake(用的多)
1. 创建项目,项目结构一般包含:
-
.vscode
-
bin文件夹 存放二进制文件
-
build文件夹 存放编译过程中产生的中间文件
-
doc文件夹 存放相关文档
-
inc文件夹 存放头文件(.h文件)
-
lib文件夹 存放库文件
-
src文件夹 存放源代码文件(.c文件)
-
CMakeLists.txt Cmake配置文件
2.创建CMakelists.txt,内容可以参考如下:
1 | cmake_minimum_required(VERSION 3.10)#最小版本要求 |
3. 在cmake插件的状态栏里点击“生成”,然后”在终端中运行
4.上传github仓库:
法一:git上传
先在指定文件夹中git bash here:
-
将远程仓库的文件拷贝到本地使用命令:
git clone 链接 -
上传文件到仓库:
git add .
git commit -m ‘注释’
git push -u origin main
法二:gitlens插件
-
打开状态栏的gitlens插件,加号将更改暂存
-
点提交后同步即可
gitlens使上传速率大大提高,并图形化了过程
法三:githubdesktop
直接在githubdesktop里打开对应的仓库的文件夹。文件有变动之后add、commit、push即可