Makefile的编写

在Linux上开发的人,应该都知道Makefile,但如果要自己写Makefile,问题可能就暴露出来了,至少刚开始我是这样的。
先创建一个简单的工程,工程中包含如下几个文件:

  • print.c
#include "print.h"
void PrintTest()
{
    printf("Test Makefile\n");
}
  • print.h
#include <stdio.h>
void PrintTest();
  • main.c
#include "print.h"
void main()
{
    PrintTest();
}

Makefile的编写:

  • 第一种方法
main:
    gcc -o main main.c print.c
clean:
    rm -rf main

这种方法看着很直观,但不会有中间文件(.o)生成。不够智能。

  • 第二种方法
main : main.o print.o
    gcc -o main main.o print.o

#下面四句也可以放在前面
main.o : main.c main.h
    gcc -c main.c -o main.o
print.o : print.c print.h
    gcc -c print.c print.o

clean:
    rm *.o main

感觉比第一种方法复杂了一些,但至少更像Makefile了吧。

  • 第三种方法
main : main.o print.o
    gcc -o main main.o print.o
%o : %.c
    #$(warning $<)
    #$(warning $@)
    gcc -c $< -o $@
clean:
    rm *.o main

如果不知道 < <script type="math/tex" id="MathJax-Element-52"> <与< script>@表示什么,可以把注释掉的代码开启来,看看它会打印什么,感觉越来越智能了,有木有?< p>

  • 第四种方法
PROG = test
SOURCES := $(wildcard *.c)
OBJECTS := $(SOURCES:.c=.o)
%.o : %.c
    gcc -c $< -o $@
main:$(OBJECTS)
    gcc -o $(PROG) $(OBJECTS)
clean:
    rm -rf *.o $(PROG)

这个跟之前的几种比,是不是也加高大上了呢?而且不管你添加了多少源代码文件,都可以使用。

纯手写,可能存在一些拼写错误,还请见谅!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值