1
我试图在不同的目录中获取目标文件和可执行文件。在根文件夹中有一个obj和exe文件夹,但我不知道如何让make来运行它。不同目录中的Makefile,可执行文件和目标文件
我曾尝试这样的东西:
$(EXEDIR)/sfml-app: $(OBJ)
和
$(OBJDIR)/%.o: %.cpp
,但它给我的错误。任何人都可以解释我如何才能让它运行?
我试图在不同的目录中获取目标文件和可执行文件。在根文件夹中有一个obj和exe文件夹,但我不知道如何让make来运行它。不同目录中的Makefile,可执行文件和目标文件
我曾尝试这样的东西:
$(EXEDIR)/sfml-app: $(OBJ)
和
$(OBJDIR)/%.o: %.cpp
,但它给我的错误。任何人都可以解释我如何才能让它运行?
如果你想让你的输出到另一个目录,你必须告诉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)