Makefile的使用:
首先写目标文件编译时需要依赖哪些文件如:
main: main.c fun1.o #表示目标文件main的生成需要main.c和fun1.o等依赖文件
gcc main.c fun1.o -o main #对这些文件进行编译并连接成main可执行文件
fun1.o: fun1.c
gcc -c fun1.c #当main的依赖文件没有fun1.o时,需要继续寻找fun1.o生成的方法
clean:
rm *.o main #当要删除没有用的文件时执行clean操作
当需要换编译器时,比如不用gcc编译器了,有没有一种简单的方式可以快速替换编译器呢:
在选择编译器时可以在头声明类似宏的替换,比如:
CC = gcc
在进行编译时要调用gcc编译器的使用方式为(以以上文件的编译组成为例):
CC = gcc
main: main.c fun1.o
$(CC) main.c fun1.o -o main
fun1.o: fun1.c
$(CC) -c fun1.c
clean:
rm *.o main
当编译时需要调用第三方库时或者连接指令时,也可以采用这样的方式来进行替换
CC = gcc
CFLAGS = -lpthread
main: main.c fun1.o
$(CC) $(CFALGS) main.c fun1.o -o main
fun1.o: fun1.c
$(CC) -c fun1.c
clean:
rm *.o main
当需要同时编译两个含有main函数的文件时,通过makefile可不可以实现呢
如果main的生成方法下另起一行进行main1de1编写,因为main的生成并没依赖于main1,所以不会执行对main1的生成编译;此时我们可以将main和main1作为另一个文件的依赖,例如:
CC = gcc
all:main main1 #只需写all的依赖文件有main和main1,此后makefile会去
#找main和main1的生成方法,而我们的目的就是使用makefile
#生成两个可执行文件main和main1,因此不用写最终all是怎样编译生成的,
#找到他的依赖是怎样进行编译的,生成可执行文件即达到了我们的目的
main: main.c fun1.o
$(CC) main.c fun1.o -o main
main1:main1.c fun1.o
$(CC)main1.c fun1.o -o main1
fun1.o: fun1.c
$(CC) -c fun1.c
clean:
rm *.o main main1
好了,进行到这我们就学会了makefile如何编写了,当编译大的工程文件时再也不用一步一步进行编译了,笔芯。