五、Linux项目自动化构建工具-make/Makefile
make:是一条指令。
makefile:是一个当前目录下的文件。
第一行:依赖关系。
第二行:依赖方法。
clean是空依赖关系。
编译文件清理
背景
会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。
一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,
makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,
甚至于进行更复杂的功能操作。
makefile带来的好处就是——“自动化编译”,一旦写好,
只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
make是一个命令工具,是一个解释makefile中指令的命令工具,
一般来说,大多数的IDE都有这个命令,
比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。
可见,makefile都成为了一种在工程方面的编译方法。
make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。
理解
依赖关系、依赖方法
先找makefile文件,在makefile文件种找依赖关系和依赖方法,根据源文件帮我们形成对应的目标文件。
mycode是依赖关系的目标文件
mycode依赖mycode.c这个源文件
gcc -o mycode mycode.c这个叫做依赖方法
makefile的自动化推导(栈式结构)
形成mycode就要先形成mycode.o
形成mycode.o就要先形成mycode.s
形成mycode.s就要先形成mycode.i
形成mycode.i就要先找到mycode.c
这个顺序与输入顺序无关。
是否能重新make
(在不修改源代码的基础上)为什么只能make一次
因为源文件没修改,形成的目标文件内容不需要(没有必要)再更新。提高编译效率。
修改源代码可以重新make
修改前:
修改后:
怎么做到的?(怎么知道我当前的文件要不要被编译)
一定是源文件形成可执行文件的,先有源文件,再有可执行文件。
一般而言,源文件的修改时间 比 形成可执行文件的时间要 老。
如果我们修改了源文件,历史上还有可执行文件,那么源文件最近修改时间 比 可执行文件形成时间要 新。
how:
只需要比较可执行程序的最近修改时间 和 源文件的最近修改时间
.exe 新于 .c 源文件是老的,不需要重新编译。
.exe 老于 .c 源文件是新的,需要重新编译。
一般而言:.exe 形成时间 与 .c 最近修改时间 一般不会一样。
一般比较modify时间即可(对modify时间有疑问的同学,移步至“补充stat”)
结论:make会根据源文件和目标文件的新旧,判定是否需要重新执行依赖关系进行编译!(不一定总是执行)
如果想让对应的依赖关系总是执行呢?
.PHINY:伪目标 -> 总是被执行
如何清理
clean是空依赖关系
一般是让clean作为伪目标,总是被执行。
如果把clean放在最前面,则使用make命令默认执行第一行
所以不建议把清理放在最前面
make后面直接跟目标文件:指定名称 执行该目标文件的依赖关系与依赖方法
特殊符号
$@是目标文件 也就是冒号左边的
$^是源文件 也就是冒号右边的
在编译的时候,$@、$^会回现出来
如果不想让它回现出来,就在前面加上@
补充
stat
显示时间
文件=文件内容+文件属性
修改文件内容:
修改文件属性:
要把时间都修改成最近的时间
修改access时间为最近时间
六、使用git 命令行
git具有网络功能的版本控制器,是开源的,客户端和服务端是一体的。
安装 git
yum install git
已经下载好了是这样的
git版本
在 Github 创建项目
使用 Github 创建项目
注册账号
这个比较简单, 参考着官网提示即可. 需要进行邮箱校验.
创建项目
-
登陆成功后, 进入个人主页, 点击左下方的 New repository 按钮新建项目
-
然后跳转到的新页面中输入项目名称(注意, 名称不能重复, 系统会自动校验. 校验过程可能会花费几秒钟). 校验
完毕后, 点击下方的 Create repository 按钮确认创建.
-
在创建好的项目页面中复制项目的链接, 以备接下来进行下载.
下载项目到本地
创建好一个放置代码的目录.
这里的 url 就是刚刚建立好的 项目 的链接.
这个.git就是本地仓库
git中的隐藏目录
将代码克隆到了本地中,但是没有被仓库管理起来
三板斧第一招: git add
将代码放到刚才下载好的目录中
git clone [url]
将需要用 git 管理的文件告知 git
三板斧第二招: git commit
提交改动到本地
最后的 "." 表示当前目录
提交的时候应该注明提交日志, 描述改动的详细内容.
三板斧第三招: git push
同步到远端服务器上
需要填入用户名密码. 同步成功后, 刷新 Github 页面就能看到代码改动了.
配置免密码提交
git本地免密码和账号pull、push_没有git账号怎么拉代码-CSDN博客
git add [文件名]
git commit .
git push
其他问题
git首次使用需要配置邮箱和用户名
why?
对代码进行溯源
要开源或者删除仓库 该怎么办?
.gitignore问题
在这里的后缀将不会上传至远端
最终只有.ppp的成功上传,同时,.gitignore也改变了
查看提交记录