我使用在线教程制作了测试makefile。它可以工作,但我也希望将所有.o文件都转到特定的子文件夹。有没有办法使用makefile执行此操作?这是我到目前为止所拥有的。
CC=gcc # specifies the compiler to use.
CFLAGS=-I. # specifies to look in the current directory.
DEPS = path_tools.h # DEPS stores each .h file to be added.
OBJ = checkpath.o path_tools.o # OBJ stores each object file to compile.
%.o: %.c $(DEPS)
$(CC) -c -o $@ $< $(CFLAGS)
checkpath.exe: $(OBJ)
gcc -o $@ $^ $(CFLAGS)
答案 0 :(得分:1)
您可以将文件夹的路径传递给makefile以创建并将结果放入。 要将参数传递给makefile:
使DPATH =你的路径
在makefile中使用:
$(DPATH)
创建此路径并将其作为路径添加到* .o文件的头部。
答案 1 :(得分:1)
对于GNU make,您可以使用此Makefile。
ODIR:=obj CC:=gcc CFLAGS:=-I. DEPS:=path_tools.h OBJ_:= checkpath.o path_tools.o OBJ:=$(addprefix $(ODIR)/, $(OBJ_)) PROG=checkpath.exe all:$(PROG) $(OBJ): $(DEPS) $(ODIR)/%.o: %.c $(CC) -c -o $@ $< $(CFLAGS) $(PROG): $(OBJ) $(CC) -o $@ $^ $(CFLAGS) clean: rm -f $(OBJ) $(PROG)