makefile用法

概念

定义规则,指定文件编译和链接的顺序,并告诉make, 又称 自动化编译.

包含5个内容

1.显式规则,

2.隐晦规则,

3.变量定义

4.文件指示

5.注释

如果make之前已经有编译过的o文件.可以使用make clean

还是用之前的3个文件

tool.h tool.c main.c
在tool.h中

int find_max(int arr[],int n);

在tool.c中

#include "tool.h"

int find_max(int arr[],int n){
        int max= arr[0];
        int i;
        for(i= 0;i<n;i++){
                if(arr[i]>max){
                        max= arr[i];
                }
        }
        return max;
}

在main.c中

#include <stdio.h>
#include "tool.h"

int main(){
        int arr[]= {1,3,5,8,2};
        int max= find_max(arr,5);
        printf("max=%d\n",max);
}

先不用makefile 编译一波

命令如下:

gcc -c tool.c
gcc -c main.c
gcc -o main main.o tool.o
./main

然后编辑makefile文件:

前面的define func 表示 怎么再makefile文件中声明和使用有参和无参的构造方法

define func
$(info "hello")
endef
$(call func )


define func1
$(info $(1) $(2))
endef

$(call func1,hello,world)

定义objects 变量是为了以后如果改 .o文件时 只要再变量定义的时候改下就OK了

实际上的make的命令也就是

objects = main.o tool.o

main: $(objects)
        gcc $(objects) -o main

当执行 make clean时 执行如下:

objects = main.o tool.o

.PHONY:clean
clean:
        -rm main $(objects)

.PHONY:显示的指明clean是一个为目标,避免和文件重名 编译时候发生错误

因为这种target不会生成 clean文件,为目标的名字不能和文件名重复 所以需要.PHONY

整个makefile文件如下

define func
$(info "hello")
endef
$(call func )


define func1
$(info $(1) $(2))
endef

$(call func1,hello,world)
objects = main.o tool.o

main: $(objects)
        gcc $(objects) -o main
        
.PHONY:clean
clean:
        -rm main $(objects)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值