我想将源代码和目标代码分开到不同的目录。
以下是我的目录树:
.
|-- bsp
| |-- Makefile
| `-- x86
| |-- begin.s
| |-- dummy.s
| |-- helloos.s
| |-- lowlevel_init.s
| `-- Makefile
|-- buildrules
| |-- builder.rules
| |-- linker.rules
| `-- subdir.rules
|-- configure
| `-- helloos.lds
|-- hypervisor
| |-- font.c
| |-- int.c
| |-- int_entry.s
| |-- Makefile
| |-- mouse.c
| `-- start.c
|-- include
| |-- common.h
| `-- font.h
|-- lib
| |-- lib.s
| `-- Makefile
|-- Makefile
`-- README.md
我想在根(TOP)目录上创建一个“obj”子目录。将所有obj文件放入其中。
如下所示:
.
|-- bsp
| |-- Makefile
| `-- x86
| |-- begin.s
| |-- dummy.s
| |-- helloos.s
| |-- lowlevel_init.s
| `-- Makefile
|-- buildrules
| |-- builder.rules
| |-- linker.rules
| `-- subdir.rules
|-- configure
| `-- helloos.lds
|-- hypervisor
| |-- font.c
| |-- int.c
| |-- int_entry.s
| |-- Makefile
| |-- mouse.c
| `-- start.c
|-- include
| |-- common.h
| `-- font.h
|-- lib
| |-- lib.s
| `-- Makefile
|-- Makefile
|-- obj
| |-- begin.o
| |-- dummy.o
| |-- font.o
| |-- helloos.o
| |-- int_entry.o
| |-- int.o
| |-- lib.o
| |-- lowlevel_init.o
| |-- mouse.o
| `-- start.o
`-- README.md
然后,这是我的实现:
%.o: %.c
$(CC) $(CFLAGS) -c -o $(OBJDIR)/$@ $<
%.o: %.s
$(AS) $(ASFLAGS) -o $(OBJDIR)/$@ $<
但我不喜欢这种实现。
我想这样写:
$(OBJDIR)/%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $<
$(OBJDIR)/%.o: %.s
$(AS) $(ASFLAGS) -o $@ $<
如果我这样做,请不要遵循这些规则,但它使用隐含规则。
谢谢你的帮助!!!!!!!!!!!!!!!
欢迎任何不解。