2016-04-12 56 views
0

我使用在线教程制作了测试makefile。它的工作原理,但我也想让我所有的.o文件转到特定的子文件夹。有没有办法使用makefile来做到这一点?这是我到目前为止。在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 [email protected] $< $(CFLAGS) 

checkpath.exe: $(OBJ) 

     gcc -o [email protected] $^ $(CFLAGS) 
+0

你知道你现在的makefile有什么功能吗?它是如何做到的? –

回答

1

对于GNU,你可以使用这个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 [email protected] $< $(CFLAGS) 
    $(PROG): $(OBJ) 
     $(CC) -o [email protected] $^ $(CFLAGS) 
    clean: 
     rm -f $(OBJ) $(PROG) 

+0

谢谢。我无法得到这个工作:matt @ matt-VirtualBox:〜/ code $ make -f makefile_Example_new make:***目标'path_tools.h'没有规则,需要'obj/checkpath.o' 。停止。 – netcat

+0

谢谢。这工作完美。我有错误的子文件夹。 – netcat

1

你可以通过你的文件夹的路径为Makefile创建并把结果在 要传递参数的Makefile:

化妆DPATH =您的路径

要在生成文件使用:

$(DPATH)

创建此路径,并把它添加到您的* .o文件的头作为路径。

相关问题