项目管理工具:make/Makefile

Makefile

作用:记录项目构建规则流程的文本文件。
先在Makefile中写下项目的构建
\t 是指 Tab键。
格式如下图:
在这里插入图片描述
声明伪对象: 不管对象是否是最新的,每次都能重新生成。
格式: .PHONY : 对象名
如果不声明伪对象一旦出现和项目名相同的流程执行就会出错。
在这里插入图片描述
在这里插入图片描述

make

作用:
Makefile的解释器,逐行解释执行项目构建规则,完成项目的构建。从当前所在的目录找到Makefile,在Makefile中找到第一个目标对象后 执行命令;完毕后,make退出。
若是发现依赖对象也需要生成的话,则会向下查找依赖对象的生成规则,不断的向下递归生成。
具体如下:
在这里插入图片描述
执行后生成的文件如下:
在这里插入图片描述
也可以用%来代替文件名:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

变量替换法

以下是三个文件

头文件 demo.h

#ifndef _DEMO_H
#define _DEMO_H

#include<stdio.h>

void CarryOut();

#endif

执行文件 fun.c

#include"demo.h"

void CarryOut()
{
	printf("hello world\n");
}

主函数 main.c

#include"demo.h"

int main(int argc, char *argv[])
{
	CarryOut();
	
	return 0;
}
	

可以看出main的执行依赖于执行文件fun.c,就可以这样写

CC = gcc       //这里用 CC 来代替 gcc, 使用的时候 $(CC) == gcc 了
//操作符也能用被代替  FLAGS = -o    $(CC) $(FLAGS)  == gcc -o
OBJS = main.o fun.o
BIN = main

$(BIN):$(OBJS)
        $(CC) $^ -o $@

%.o:%.c
        $(CC) -c $^ -o $@

.PHONY:clean
clean:
        rm -rf *.o $(BIN)

运行结果
在这里插入图片描述

makefile 生成多个可执行文件

因为 makefile 的特性,导致 makefile 原则上只能生成一个可执行文件,所以需要使用 all 来帮助。使用 all 可以构造一个没有规则的终极目标all,并以这两个可执行文件作为依赖。

比如生成两个可执行文件 tss、css

all : tss css
cc = gcc
objs1 = tss.o
objs2 = mss.o
bin1 = tss
bin = mss

$(bin1):$(objs1)
	$(cc) $^ -o $@ 
$(bin2):$(objs2)
	$(cc) $^ -o $@ 
$(objs1):%.o:%.c
	$(cc) -c $^ -o $@
$(objs2):%.o:%.c
	$(cc) -c $^ -o $@
.PHONY:clean
clean:
	rm -rf *.o $(bin1) $(bin2)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值