Linux Makefile中的目标如何指定

avatar
作者
筋斗云
阅读量:0

在 Linux 的 Makefile 中,目标是要生成的文件或执行的操作

  1. 显式规则:这是最常用的方法,用于指定一个或多个目标文件及其依赖关系。语法如下:
target: prerequisites [TAB] recipe 
  • target 是要生成的文件。
  • prerequisites 是生成目标所需的输入文件。
  • recipe 是生成目标所需的命令(操作)。注意,命令前面需要有一个制表符(TAB)。

例如,以下 Makefile 指定了一个名为 my_program 的目标,它依赖于 main.cutil.c 两个源文件:

my_program: main.c util.c     gcc -o my_program main.c util.c 
  1. 隐式规则:这种方法允许你使用预定义的规则,而无需显式指定目标、依赖关系和操作。隐式规则基于文件的扩展名(如 .c、.o 等)自动应用。例如,以下 Makefile 将自动应用隐式规则来编译和链接 C 程序:
CC = gcc CFLAGS = -Wall OBJFILES = main.o util.o  my_program: $(OBJFILES)     $(CC) $(CFLAGS) -o my_program $(OBJFILES) 
  1. 模式规则:这种方法允许你定义一组通用规则,以便根据特定模式生成目标。语法如下:
target_pattern: prerequisite_pattern [TAB] recipe 

例如,以下 Makefile 使用模式规则将所有 .c 文件编译为 .o 文件:

CC = gcc CFLAGS = -Wall  %.o: %.c     $(CC) $(CFLAGS) -c $< -o $@ 
  1. 伪目标:这些目标不代表实际的文件,而是表示一组操作。伪目标通常用于执行特定任务,如清理、安装等。要将目标声明为伪目标,需要在 Makefile 开头添加 .PHONY 声明:
.PHONY: clean  clean:     rm -f *.o my_program 

在这个例子中,clean 是一个伪目标,它删除所有 .o 文件和名为 my_program 的可执行文件。

总之,Makefile 中的目标可以通过显式规则、隐式规则、模式规则和伪目标来指定。根据项目的需求和复杂性,可以选择合适的方法来定义目标。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!