Makefile的快速入门

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如何编写了,当编译大的工程文件时再也不用一步一步进行编译了,笔芯。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值