链接makefile中子目录中的对象构建

时间:2014-03-19 03:26:20

标签: c++ makefile

我试图在可执行编译期间链接我在makefile中构建的所有对象,但我似乎无法自动选择构建目录。

我试过了:

test: $(OBJECTS)
    $(CC) $(CFLAGS) $(INCDIR) $(LIBDIR) $(BUILDDIR)/$^ test.cpp -o test.exe

问题是$(BUILDDIR)/$^仅在第一个目标文件前插入$(BUILDDIR)

我该怎么做?

1 个答案:

答案 0 :(得分:1)

如果要直接在命令中将$(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