Makefile用法

 makefile就是自动化编译,根据时间戳判断文件是否修改

基本格式:

target..:prerequisites...有多个依赖用空格隔开

        command

makefile只主动做第一步,要想自动化进行要把最后的目标写道前面

example:

final:a.o b.o c.o

        gcc a.o b.o c.o  -o final

a.o:a.c

        gcc -c a.c -o a.o

b.o:b.c

        gcc -c b.c -o b.o

c.o:c.c

        gcc -c c.c -o c.o

make target 执行目标

        单独make 指的是执行第一个目标,如果第一个目标和目录里的文件重合了那就利用伪目标例如:.ABC:name。

        依赖相当于把目标下的命令挪过来执行。

变量

x = a 初始化

$(x) 取值

$$来表示$

example:

X = a.o b.o c.o

final: $X

        gcc $(X) -o final

a.o:a.c

        gcc -c a.c -o a.o

b.o:b.c

        gcc -c b.c -o b.o

c.o:c.c

        gcc -c c.c -o c.o

 = :是直接赋值最后一个,?=判断是否有值有。。。

写到一半发现有人写的更好

最实用的Makefile教程 真的很简单(搞不明白网上的教程写那么复杂干嘛)-CSDN博客

  echo前加@不会显示命令 echo 

条件和函数

1.

ifeq ($(ARCH),XXX)

        command

else

        command

endif

2.

ifdef ARCH

        command

endif

系统函数:

$(wildcard 函数名)

$(wildcard *.c) 这个值是所有.c

$(patsubst %.c, %.o, $($(wildcard *.c)) 这个值是所有的.o

define MYFUN

        $(0)

        $(1)

endif

$(call FUN, param, param1)

 Makefile教程(绝对经典,所有问题看这一篇足够了)-CSDN博客

又看到一个写的比我好的

Makefile 是一个用于管理和自动化软件项目中的编译和构建过程的工具。通过 Makefile,可以定义一系列规则和依赖关系,告诉计算机如何构建和更新项目。 以下是 Makefile 的基本使用方法: 1. 创建一个名为 "Makefile" 或 "makefile" 的文件,并将其放置在项目根目录下。 2. 在 Makefile 中定义规则。每个规则由以下几部分组成: - 目标(Target):规定了要生成的文件或执行的操作。 - 依赖(Dependencies):规定了生成目标所需要的文件或操作。 - 命令(Command):规定了生成目标的具体操作。 例如,下面是一个简单的 Makefile 示例: ```makefile target: dependency1 dependency2 command1 command2 ``` 3. 定义规则后,可以在命令行中使用 `make` 命令执行 Makefile 中的规则。例如,要执行上述示例中的目标 `target`,可以运行命令: ``` make target ``` 4. Makefile 还提供了一些特殊的变量和函数,可以用于更灵活地定义规则。一些常用的变量包括: - `CC`:C 编译器的名称。 - `CFLAGS`:编译选项。 - `LDFLAGS`:链接选项。 - `SRC`:源文件列表。 - `OBJ`:目标文件列表。 - `BIN`:生成的可执行文件名。 你可以在规则中使用这些变量,例如: ```makefile CC = gcc CFLAGS = -Wall -O2 target: $(OBJ) $(CC) $(LDFLAGS) -o $(BIN) $(OBJ) %.o: %.c $(CC) $(CFLAGS) -c $< -o $@ ``` 这是 Makefile 的基本使用方法,通过定义规则和使用 make 命令,你可以自动化编译和构建项目。更复杂的项目可能需要更详细的 Makefile 配置,你可以查阅相关文档来深入了解。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值