Makefile自动依赖
gcc -MM
是 GCC
编译器的一个选项,用于生成依赖文件,即列出源文件所依赖的头文件。这通常用于自动化构建过程中,帮助 make
工具确定何时需要重新编译某个源文件。
- 选项详解
M
:生成一个依赖文件,列出所有依赖关系,包括系统头文件。MM
:生成一个依赖文件,仅列出用户定义的头文件,不包括标准系统头文件。MMD
:与 -MM 类似,但会将依赖信息输出到 .d 后缀的文件中。MF file
:指定依赖文件的输出路径。MT target
:指定依赖文件中的目标名称。
- 示例用法
- 文件目录结构
.
├── func.c
├── func.h
├── main.c
└── makefile main.c
#include "func.h"int main() {printHi();return 0; }
func.h
#ifndef __FUNC_H__ #define __FUNC_H__void printHi(void);#endif
makefile
# Makefile CC=gcc CFLAGS=-WallSOURCE=$(wildcard *.c) OBJS=$(SOURCE: .c=.o) # 主构建规则 all: $(OBJS)$(CC) $(CFLAGS) -o $@ $^%.o: %.c$(CC) $(CFLAGS) -c $< -o $@ @echo "Compiled $< to $@" # 规则来生成依赖文件 %.d: %.c$(CC) -MM $< > $@ # 包含所有生成的依赖文件 -include $(wildcard *.d)# 清理规则 clean:rm -f *.o allrm -f *.d
output
gcc -Wall -o all main.c func.c Compiled main.c func.c to all
- 文件目录结构