Makefile是一种组织代码编译的方法,它定义了一组规则来指定哪些文件需要首先被编译,以及如何从源代码文件生成目标文件。Makefile的主要目标是简化和自动化编译过程,避免手动调用复杂的命令行。

在详解Makefile基础指令之前,我们需要了解几个基本概念:

  • 目标(Target):通常是生成的可执行程序或者库。
  • 依赖(Dependencies):这些是目标所依赖的源码或者其他对象。
  • 命令(Commands):这些命令用于从依赖生成目标。

一个基本格式如下:

target: dependencies
    commands

现在我们来详细介绍几个常见和重要的Makefile指令:

  1. all: 这个特殊规则通常位于makefile开始部分。当你只输入 make而不带任何参数时,默认执行此规则。它后面跟着所有顶级目标名字,并且每一个名字都必须在文档中有对应定义。
all: prog1 prog2 prog3 
  1. clean: 这也是一个特殊规则,在你想清除所有被make创建出来对象时使用此命令。例如删除.o和可执行文件等。
clean:
    rm -f *.o prog1 prog2 prog3
  1. .PHONY: 这是一个伪目标,它用于在没有文件名的情况下执行命令。例如,我们经常将 allclean作为 .PHONY的目标。
.PHONY: all clean
  1. 变量: 在Makefile中,我们可以定义变量来简化和统一管理。例如定义编译器、编译选项等。
CC=gcc 
CFLAGS=-I.
  1. 自动变量:这些是特殊的预定义变量,在规则中可以使用它们来引用当前规则的目标名和依赖项等。常见自动变量有:
  • $@: 表示规则中的目标文件集。
  • $^: 表示所有依赖对象集合。
  • $<: 表示第一个依赖对象。
%.o: %.c $(DEPS)
    $(CC) -c -o $@ $< $(CFLAGS)
  1. 通配符:在Makefile中我们可以使用通配符(如*、?)来匹配文件名或者字符串。
  2. 函数:Makefile提供了一些内建函数供用户使用,在复杂情况下非常有用。如subst、patsubst、strip等函数。

以上就是对于Makefile基础指令详解内容,希望对你理解和应用Makefile有所帮助。

云服务器/高防CDN推荐

蓝易云国内/海外高防云服务器推荐


海外免备案云服务器链接:www.tsyvps.com

蓝易云安全企业级高防CDN:www.tsycdn.com

持有增值电信营业许可证:B1-20222080【资质齐全】

蓝易云香港五网CN2 GIA/GT精品网络服务器。拒绝绕路,拒绝不稳定。


百度搜索:蓝易云

最后修改:2024 年 01 月 05 日
如果觉得我的文章对你有用,请随意赞赏