Makefile

1.1 语法:

目标:依赖

Even:
    @echo "Hello Makefile"

运行方式:

make

运行结果:

Hello Makefile

1.2 目标与依赖相互嵌套

Even:Jacy
    @echo "hello makefile"
Jacy:ChuiHua
    @echo "hello Even"
ChuiHua:
    @echo "hello Jacy"

运行结果:

hello Jacy

hello Even

hello makefile

1.3 示例:

Makefile第一版

/*
    目标:依赖
    -I  头文件
    -L  库文件
    -l  链接文件
*/

./bin/main:./src/*.c
    gcc ./bin/main -o ./src/main.c -I./inc -L./lib -my_lib

2.1 变量

A = apple
B = I love China
C = $(A) tree        // $() 引用

Even:
    @echo $(A)
    @echo $(B)
    @echo $(C)

2.2 示例2

Makefile第二版
TAG= ./bin/main        #目标
SRC = ./src/*.c        #依赖
CC=gcc                 #编译器
O = -o                 #编译选择

CONFIG=-I./inc -L./lib -lmy_lib

$(TAG):$(SRC)
    $(CC) $(SRC) $(O) $(TAG) $(CONFIG)

clean:
    rm ./bin/*

2.3 变量定义方式

        2.3.1 递归定义方式
#在第一行使用到变量B但是还没有定义,以此管理器进行全文搜索找到B并引用
A = I love $(B)  
B = China
          2.3.2 直接定义方式
B = China
A := I love $(B) 
# A在B之前引用B 则为空
        2.3.3 条件定义方式
A = apple
A ?= I love China
# 如果A没有被定义,则定义
        2.3.4 多行命令定义方式
define commands
    echo “thank you!”
    echo “you are welcome.”
endef

2.4变量操作方式

        2.4.1 追加
A = apple
A += tree
        2.4.2 修改
A = srt.c string.c tcl.c
B = $(A:%.c=%.o)        #将.c文件改为.o文件

2.5 示例3

Makefile第三版本 
TAG=./bin/main
SRC=./src/Input.c ./src/main.c ./src/Oper.c ./src/Output.c 
OBJ=$(SRC:%.c=%.o)
CC=gcc
O=-o
CONFIG=-I./inc 

$(TAG):$(OBJ)
    $(CC) $(^) $(O) $(@) $(CONFIG)


%.o:%.c
     $(CC) $< -o $(@) $(CONFIG) -c 

clean:
    $(RM) ./bin/* ./src/*.o

3.1 函数

最终版本Makefile
TAG=./bin/main
SRC= $(wildcard src/*.c)
OBJ=$(SRC:%.c=%.o)
CC=gcc
override CONFIG += -I./inc 

$(TAG):$(OBJ)
    $(CC) $(^) -o $(@) $(CONFIG)

%.o:%.c
    $(CC) $< -o $(@) $(CONFIG) -c

clean:
    $(RM) ./bin/* ./src/*.o

.PHONY:clean

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值