在 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/