我是GNU make 的新手。我想将我所有的程序集源文件编译成具有相同名称的单独目标文件。将来,如果我添加更多的程序集源文件,Makefile应该仍然可以不加修改地工作。
例如我在根目录中
$ ls
Makefile obj src
$ ls src
file1.s file2.s
Run Code Online (Sandbox Code Playgroud)
在make我想要之后
$ ls obj
file1.o file2.o
Run Code Online (Sandbox Code Playgroud)
将来如果我file3.s在我的src目录中添加一个,在make我想要一个新file3.o的obj目录之后。
我已经阅读了 GNU make 手册中关于静态模式规则的内容,我认为这正是我所需要的。我编写了以下 Makefile:
path = /path/to/toolchain/bin
AS = $(path)/llvm-mc
ASFLAGS = -filetype=obj
srcdir = src
sources = $(srcdir)/*.s
objdir = obj
objects = $(objdir)/*.o
.PHONY: all
all: $(objects)
$(objects): $(objdir)/%.o: $(srcdir)/%.s
$(AS) $(ASFLAGS) $< -o $@
.PHONY: clean
clean: …Run Code Online (Sandbox Code Playgroud)