Linux Makefile中的目标如何指定

   2024-09-30 3040
核心提示:在 Linux 的 Makefile 中,目标是要生成的文件或执行的操作显式规则:这是最常用的方法,用于指定一个或多个目标文件及其依赖关

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

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

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

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

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

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

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号