在 makefile 中,我在构建目录中构建所有 .o 文件:

program: class1.o class2.o class3.o
    g++ $(BUILDDIR)class1.o $(BUILDDIR)class2.o $(BUILDDIR)class3.o -o $@

从依赖项列表生成 $(BUILDDIR)class1.o $(BUILDDIR)class2.o $(BUILDDIR)class3.o 会很酷......

我知道 $^ 会给我所有依赖项的列表,用空格分隔,但我无法处理子目录。

是否可以 ?

如果我有 program: class1.o class2.o class3.o configure ,我可以从列表中排除 configure 吗?

谢谢 :)

编辑: Michael 的解决方案效果很好,但是这样做,make 找不到依赖项,并且每次都必须构建所有内容......在制定 program: class1.o class2.o class3.o 等隐式规则时,是否有更简单的方法来告诉它放置二进制文件在构建目录中?

最佳答案

离开我的头顶

g++ $(addprefix $(BUILDDIR), $^) -o $@

应该这样做。

Make manual 在 8.3 节中有这些函数的列表。

关于g++ - Makefile 构建目录和依赖列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2374863/

10-10 17:52