[linux C]编写makefile

文章介绍了Linux环境下使用make工具进行项目管理的方法,包括如何编写makefile文件来定义编译和链接规则。通过示例展示了三种不同的编写方式:普通写法、使用变量的简洁写法和更精简的表示。最后提到了清理编译产物的clean规则,并鼓励读者尝试各种写法。
摘要由CSDN通过智能技术生成

make工具是linux下帮助我们管理工程的一个工具,使用之前我们需要将编译、链接规则写在makefile文件里边,完成后在命令行中输入一个make就会自动执行。
比如在一个文件夹下有main.c、tool1.c、tool1.h、tool2.c、tool2.h这几个文件,调用关系如下图所示。
文件
其中函数调用关系
函数调用关系
在同步目录下使用vim新建一个makefile文件。

zx@zx-virtual-machine:~/Code/MakefileTest$ vim makefile

1 写法一(普通)

命令格式:
目标文件(target):依赖文件
执行命令(command,command前面一定要一个tab键,不然无法识别)
依赖文件 参数(-o -c -wall之类的) 目标文件(target)
注意:makeflie里边的书写是由规则的,命令前面一定要有一个tab键,不然无法识别到。

在这里插入图片描述
命令

tool:main.o tool1.o tool2.o
    gcc main.o tool1.o tool2.o -o tool
main.o:main.c
    gcc main.c -c -o main.o
tool1.o:tool1.c
    gcc tool1.c -c -o tool1.o
tool2.o:tool2.c
    gcc tool2.c -c -o tool2.o
clean:
    rm *.o tool -rf

编写完规则后就可以使用make命令执行了
在这里插入图片描述
最后会生成一个tool可执行文件
在这里插入图片描述
一般在makefile最后边加一个clean命令,这样可以删除所有.o文件 和 tool文件。
在这里插入图片描述
执行make clean命令清除数据
在这里插入图片描述

2 写法二(简洁)

使用变量代替其中一部分,在使用是使用$(变量名)来代替
在这里插入图片描述
在这里插入图片描述

OBJ = main.o tool1.o tool2.o
CC = gcc  #默认系统是自带的,这里再重复一下
CFLAGS += -c -g -o
tool:$(OBJ)
    $(CC) $(OBJ) -o tool
main.o:main.c
    $(CC) main.c $(CFLAGS)  main.o
tool1.o:tool1.c
    $(CC) tool1.c $(CFLAGS) tool1.o
tool2.o:tool2.c
    $(CC) tool2.c $(CFLAGS) tool2.o
clean:
    rm *.o tool -rf

写法三(精简)

在这里插入图片描述
如上图所示,命令行中的依赖文件(OBJ)和目标文件(tool)都相同,这里可以用‘^’符号代替依赖文件,使用‘@’代替目标文件。
在这里插入图片描述
最后编译出来的效果
在这里插入图片描述
以上三种方法均可自行尝试,习惯用哪种就用哪种。如有错误欢迎指正。

如有侵权请联系本人删除!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值