C语言-Makefile-学习笔记12

1. Make简介

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

2. Makefile基本结构

  • Makefile是Make读入的唯一配置文件
  • 由make工具创建的目标体(target),通常是目标文件或可执行文件
  • 要创建的目标体所依赖的文件(dependency_file)
  • 创建每个目标体时需要运行的命令(command)
  • 注意:命令行前面必须是一个TAB键,否则编译错误
  • 用法:新建一个Makefile文档,完成后在终端make一下就编译好了
target: dependency_files
	command
  • 例1:
hello.o: hello.c hello.h
	gcc -c hello.c -o hello.o
  • 例2:
test: f1.o f2.o main.o
	gcc f1.o f2.o main.o -o test
f1.o: f1.c
	gcc -c f1.c -o f1.o
f2.o: f2.c
	gcc -c f2.o -o f2.o
main.o: main.c -o main.o
	gcc -c main.c -o main.o
  • 如果想要删除生成相关的*.o文件可以用clear,见下面这个例子,在终端输入make clear就好了
test: f1.o f2.o main.o
	gcc f1.o f2.o main.o -o test
f1.o: f1.c
	gcc -c f1.c -o f1.o
f2.o: f2.c
	gcc -c f2.o -o f2.o
main.o: main.c -o main.o
	gcc -c main.c -o main.o
PHONY: clean
	rm *.o test

3. 创建和使用变量

  • 定义变量的两种方式

    • :=:直接赋值,常规赋值方式,一赋值马上有效。在没赋值是为空字符。
    • ?=:仅仅在变量还没赋值的情况下才有效,所有一般用在第一次赋值
    • +=:在变量后加上字符
    • VAR=var:递归展开方式,赋值后并不马上生效,等到使用时才真正的赋值,此时通过递归找出当前的值,所有在使用是很有可并不是开始赋的值
  • 使用变量:$(VAR),如果要用$符号则需要$$来表示

  • 举例

OBJS = kang.o yul.o
CC = gcc
CFLAGS = -Wall -O -g
sunq: $(OBJS)
	$(CC) $(OBJS) -o sunq
kang.o: kang.c kang.h
	$(CC) $(CFLAGS) -c kang.c -o kang.o
yul.o: yul.c yul.h
	
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值