makefile 多文件,多目录的实现

仅做复习笔记备查


主目录随意定义,子目录:sub

文件共3个:all.cadd.cminus.c

主目录:

All.c

子目录(sub):

add.cminus.c

 

文件内容分别入下:

All.c内容:


#include <stdio.h>

int main(void)
{
	int a=8;
	int b=3;
	printf("a= %d  b=%d \n",a,b);
	int sum =add(a,b);
	printf("a+b= %d \n",sum);
	int cha=minus(a,b);
	printf("a-b=%d\n",cha);
	return 0;


}


Add.c内容:


int add(int a,int b)
{
	int result;
	result=a+b;
	return result;
}


Minux.c内容:


int minus(int a,int b)
{
	int result;
	result=a-b;
	return result;
}


Makefile内容:


#找出当前目录和子目录所有.c文件
src=$(wildcard *.c ./sub/*.c)
#去掉目录
dir=$(notdir $(src))
//替换所有.c文件为 .o文件
obj=$(patsubst %.c,%.o,$(src))
//生产的目标文件名
target=op
//默认打印相关变量内容:
all:
	@echo $(src)
	@echo $(dir)
	@echo $(obj)
	@echo "end"
//编译目标和相关依赖及编译选项
build:$(target)
$(target):$(obj)
	$(CC) -o $(target) $(obj) 

//清除相关的.o文件
.PHONY:clean
clean:
	rm -rf all $(obj)
make :默认打印相关变量路径

make build : 在主目录生产一个”op”文件

make clean: 清除编译过程的.o文件


运行(./op)结果如下:

a= 8  b=3 
a+b= 11 
a-b=5


运行结果可以保存到一个文件内如:

./op > out1

cat out1

即可以文件凡是查看输出结果.



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值