我试图在可执行文件编译期间链接我在 makefile 中构建的所有对象,但我似乎无法自动选择构建目录。
我试过:
test: $(OBJECTS)
$(CC) $(CFLAGS) $(INCDIR) $(LIBDIR) $(BUILDDIR)/$^ test.cpp -o test.exe
问题是 $(BUILDDIR)/$^
只在第一个目标文件前面插入 $(BUILDDIR)
。
我应该怎么做?
最佳答案
如果你想直接在命令中添加$(BUILDDIR)
到所有先决条件,那么你可以这样做:
test: $(OBJECTS)
$(CC) $(CFLAGS) $(INCDIR) $(LIBDIR) $(addprefix $(BUILDDIR)/,$^) test.cpp -o test.exe
但是,以这种方式设置 make 规则意味着您没有正确跟踪依赖关系。我认为您真正想要的是:
test: $(addprefix $(BUILDDIR)/,$(OBJECTS))
$(CC) $(CFLAGS) $(INCDIR) $(LIBDIR) $^ test.cpp -o test.exe
关于c++ - 在 makefile 的子目录中链接对象构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22495600/