首页 > 其他 > 详细

C管理工具MakeFile

时间:2020-05-01 21:26:20      阅读:68      评论:0      收藏:0      [点我收藏+]

Make简介

  • 工程管理器,顾名思义是指管理较多的文件
  • Make工程管理器也就是个"自动编译管理",这里的"自动"是指它能够根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它能够读入Makefile文件的额内容来执行大量的编译工作
  • Make将只编译改动的代码文件,不用完全编译

 

 

Makefile基本结构

Makefile是Makee读入的额唯一配置文件

  • 由make工具创建的目标体(target),通常是目标文件或可执行文件
  • 要创建的目标体所依赖的文件(dependennncy_file)
  • 创建每个目标体时需要运行的命令(command)
  • 注意:命令行前面必须是一个"TAB键",否则编译错误为:*** missing separator. Stop

Makefile格式

target:dependency_file
<TAB>command

 

Makefile

test:f1.o f2.o main.o
    gcc f1.o f2.o main.o
f2.o:f2.c
    gcc -c Wall f2.c -o f2.o
f1.o:f1.c
    gcc -c -Wall f1.c -o f1.o
main.0:main.c
    gcc -c -Wall main.c -o main.o
.PHONY:clean
clean:
    rm -rf *.o

// 解释
先执行test 发现依赖f1.o,f2.o,main.o依次执行下面的代码
.PHONY:clean 因有些任务如果文件是最新的Makefile就不会执行而这条指令声明无论什么情况都会执行

// 使用make命令执行makefile文件
$ make
// 指定make执行命令 例如清除
$ make clean

 

 

变量

用来代替一个文本字符串:

  • 系列文件的名字
  • 传递给编译器的参数
  • 需要运行的程序
  • 需要查找源码的额目录
  • 你需要输出信息的目录
  • 你想做的其他事情

 

变量定义的几种方式

  • 递归展开方式:VAR=$(BAR);BAR=$(UGH);UGH=ugh
    • 优点:
      • 可以向后引用
    •  缺点:
      • 使用不当容易造成死循环 例如 CFLASG=$(CFLASG) -0       
  • 简单方式:VAR:=var
  • 其他: VAR?=bar (如果VAR没有定义过则这条语句生效,如果定义过则不生效)  

变量使用(用`$`或`$$`来表示)

$(VAR)

 

Makefile

FILES = f1.o f2.o main.o

test:$(FILES)
    gcc $(FILES)
f2.o:f2.c
    gcc -c Wall f2.c -o f2.o
f1.o:f1.c
    gcc -c -Wall f1.c -o f1.o
main.0:main.c
    gcc -c -Wall main.c -o main.o
.PHONY:clean
clean:
    rm -rf *.o

 

Makefile中的预定义变量

 

C管理工具MakeFile

原文:https://www.cnblogs.com/binHome/p/12814472.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!