1
我对Makefiles没有太多经验,所以答案可能很明显。但是,我无法在GNU make手册或其他地方找到我在寻找的东西。我已经遇到过几次这个问题,所以我做了一个示例项目来演示它。Makefile:从.c文件编译.o
我有目录:
- 的src /为.c文件
- 编译/对图书馆正在修建
- OBJ /所有.o文件(一个来自不同的项目正在编译)
是什么样子:
$ ls -l
total 0
drwxrwxr-x+ 1 sam None 0 Jan 5 15:43 build
drwxrwxr-x+ 1 sam None 0 Jan 5 15:43 obj
drwxrwxr-x+ 1 sam None 0 Jan 5 15:42 src
我的Makefile:
CC=gcc
CFLAGS=-Wall
SOURCES=$(wildcard src/*.c)
SOURCE_OBJECTS=$(patsubst src/%.c,obj/%.o,$(SOURCES))
OBJECTS=$(wildcard obj/*.o)
HASHSRC=/cbib/libhash/src/hash.c
TARGET=target.a
all: $(TARGET)
$(TARGET): $(OBJECTS)
ar rcs [email protected] $^
obj/%.o: src/%.c
$(CC) -o [email protected] $^ $(CFLAGS)
obj/hash.o: $(HASHSRC)
$(CC) -o [email protected] $^ $(CFLAGS)
规则
obj/%.o: src/%.c
捕捞量的OBJ /目录下的所有.o文件。但是我只想要捕获SOURCE_OBJECTS中列出的文件,并从src /目录中的相应文件编译它们。我将如何做到这一点?
正是我在找的是...感谢您的快速反应! – riverrun