在MakeFile中设置选项以将对象文件发送到特定文件夹

时间:2016-04-12 15:20:25

标签: c gcc makefile

我使用在线教程制作了测试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)

2 个答案:

答案 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)