A Simple Makefile Example
val = A.o B.o
def_file := $(patsubst %,.%.d,$(val))
out: $(val)
gcc -o out $^
%.o:%.c
gcc -c -o $@ $< -MD -MF .$@.d
clean:
@$(val) $(def_file)
.PHONY:clean
简单的例子。当想编译A.c和B.c文件,以及他们的头文件时。
先定义一个变量val,使其为所需.o文件,然后用到
gcc -MD -MF filename
命令,查找.c文件的依赖关系即头文件所在位置且将其写入filename中,然后编译。
还使用了
$(patsubst %,.%.d,$(val))
函数将val中的.o文件变成.name.d文件,即用来存储头文件所在位置的文件。
$^:目标所有的依赖文件,例子中指A.o,B.o
$@:所有的目标文件,例子中分别指A.o,B.o
$<:第一个依赖文件,例子中先指A.c,再指B.c
这个例子适用于少数.c文件的情况下,且只需更改val变量即可。最终目标文件依照个人情况可酌情更改。学习期间,应该够用了。
。1
个人学习情况的一个总结,还是小白,应该还有些理解不对的地方。 ↩︎