2013-07-22 120 views
1

我试图在不同的目录中获取目标文件和可执行文件。在根文件夹中有一个obj和exe文件夹,但我不知道如何让make来运行它。不同目录中的Makefile,可执行文件和目标文件

我曾尝试这样的东西:

$(EXEDIR)/sfml-app: $(OBJ) 

$(OBJDIR)/%.o: %.cpp 

,但它给我的错误。任何人都可以解释我如何才能让它运行?

回答

2

如果你想让你的输出到另一个目录,你必须告诉make(和编译器)。他们不会猜测,因为你有一个名为OBJDIR的变量!你必须真正使用它。

确保你的目标名称具有目录前缀,以便让知道,你所期望的目标文件,结束了:

OBJ = $(patsubst %.cpp, $(OBJDIR)/%.o, $(SRC)) 

,并确保你告诉编译器在您想要的目标文件由落得使用-o标志:

$(OBJDIR)/%.o: %.cpp 
     $(CXX) $(CXXFLAGS) -c $< -o [email protected] 

同样,如果您想在最终输出可为EXEDIR你在Makefile使用它都发送值连接器,再次通过-o

all: $(EXEDIR)/sfml-app 

$(EXEDIR)/sfml-app: $(OBJ) 
     $(CXX) -o [email protected] $(OBJ) $(LIBS) 
相关问题