赞
踩
我们在进行C语言以及其它项目时,可能会创建多个文件来完成整个功能的实现,而在Linux系统下的make工具可以很有效的将我们写好的源文件通过makefile执行批处理!本文主要通过C语言实例进行。
Makfile是一种纯文本的编译脚本,在其中可以指定需要编译哪些文件,哪些先编译,哪些后编译,哪些需要重新编译,最终需要生成怎么样的应用程序;
文件命名通常是以Makefile或者makefile
如果使用非标准命名的makefile,必须用命令开关"-f" 或 “-file”
用来解释Makefile脚本,并根据脚本中的指定内容,进行操作
目标文件:你所要生成的文件,如xxx.o文件
依赖文件:就是所说的源文件,xxx.c文件
处理动作:xxx.c文件通过预处理、编译、汇编生成了xxx.o文件
//main.c文件
#include <stdio.h>
#include "1.h"
int main() {
fun1();
return 0;
}
//1.c文件
#include<stdio.h>
void fun1() {
printf("fun1()\n");
}
#ifndef _1_H
#define _1_H
void fun1();
#endif
app:main.o 1.o
gcc main.o 1.o -o app
main.o:main.c
gcc -c main.c -o main.o
1.o:1.c
gcc -c 1.c -o 1.o
进行执行
生成了目标文件和过度文件
3. 第三步:进行升级操作,变量替换
通过变量名称替换:
OBJS=代替要生成的目标文件【可以自定义】,但是需要$符号来引用
$^ :表示所有的依赖文件
$@:所有的目标文件
$<:代表第一个依赖文件
%.o:%.c:表示所有的.o和.c文件
app:main.o 1.o
gcc main.o 1.o -o app
main.o:main.c
gcc -c $< -o $@
1.o:1.c
gcc -c $< -o $@
app:main.o 1.o
gcc main.o 1.o -o app
%.o:%.c
gcc -c $< -o $@
TARGET = app
OBJS = main.o 1.o
CC == gcc
$(TARGRT):$(OBJS)
$(CC) $^ -o $@
%.o:%.c
$(CC) -c $< -o $@
7.最后添加一条指令,将多余文件清楚
clean:
rm -f $(OBJS) $(TARGET)
TARGET = app //将目标文件用TARGET替代
OBJS = main.o 1.o //将目标文件所依赖的文件用OBJS替代
CC == gcc //用CC替代编译器gcc
$(TARGRT):$(OBJS) //$ 表示引用
$(CC) $^ -o $@ //$^表示所有的依赖文件、$@表示目标文件
%.o:%.c
$(CC) -c $< -o $@ //$<表示第一个依赖文件
clean:
rm -f $(OBJS) $(TARGET) //清除没用的中间文件
Makefile可以减轻我们许许多多的工作量,需要我们在实践磨炼中与更加熟练的运用,使用时,一定要分清目标文件和依赖文件的关系,以及各种变量所表示的意义
参考文档:
1.https://blog.csdn.net/wangqingchuan92/article/details/92832544
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。