当前位置: 首页 > article >正文

makefile和make

前言

在写项目时,避免每次都输入gcc/g++,我们可以实现自动化编译来提高软件开发效率。

make 是一条命令,makefile是一个文件。

1. makefile文件举例

创建文件:

touch test.c
touch makefile

makefile文件内容:

分号行为依赖关系,test文件依赖test.o ,test.o依赖test.s,test.s依赖test.i,test.i依赖test.c。

依赖行为是依赖关系的下一行:以tab开头,然后是输入如何实现依赖关系

test:test.o
    gcc -o test test.o
test.o:test.s
    gcc -o test.o -c test.s
test.s:test.i
    gcc -o test.s -S test.i
test.i:test.c
    gcc -o test.i -E test.c
.PHONY:
clean:
    rm -f test.o test.i test.s test.o

test.c 内容:

#include <stdio.h>
int main()
{
 printf("hello Makefile!\n");
 return 0;
}

2. 讲解

如果直接在命令行里面输入make,makefile就会一层一层的找文件的依赖关系,直到实现第一个目标文件。

在依赖命令行中,可以用$@ 和$^分别代替依赖文件和被依赖文件。

.PHONY:修饰伪目标,让其总是被执行。

不在第一个目标则通过make + 命令名实现。

当make实现之后,如果没有清理文件,则不允许再次执行make。

服务器判断的依据是依赖关系中的两个文件的时间戳,如果依赖文件的内容修改时间戳大于被依赖文件的时间戳,则不会再次实现make.

2.1 stat命令

显示文件的状态

access:文件最近访问时间,在文件被多次访问后改变(减少因访问次数过多,改变次数过多浪费资源)

modify:文件内容修改时间,在文件内容被修改后改变

change:文件属性被改变后改变

通常modify改变后change也会改变,因为修改内容后会改变文件大小,而大小是属于文件属性。


http://www.kler.cn/news/356393.html

相关文章:

  • JavaWeb学习(3)
  • [项目详解][boost搜索引擎#1] 概述 | 去标签 | 数据清洗 | scp
  • 024 elasticsearch集群
  • 生财合伙人推荐 - 鞠海深-群控
  • 霍夫圆型硬币检测Matlab程序
  • GitHub与GitCode
  • vuefor循环动态展示图片不显示
  • ARM指令集和汇编语言的关联学习
  • 设计模式——代理模式(6)
  • 408算法题leetcode--第33天
  • 【概率论】泊松分布
  • Gorm操作数据库,有和没有WithContext的区别
  • 【设计模式】深入理解 Python 单例模式:从原理到实现
  • 第8篇:网络安全基础
  • Docker 安装sql server 登陆失败
  • .NET Sqlite加密
  • Golang | Leetcode Golang题解之第475题供暖器
  • 飞控开发软件有哪些?技术详解
  • HCIP--1实验DNS,VLAN,静态路由,浮动静态,动态路由协议,Telnet
  • Scala大数据开发