【发布时间】:2015-05-11 08:53:18
【问题描述】:
我目前正在尝试为我继承的项目重新编写 makefile,以使源代码树更整洁且更易于使用。目前源码树是这样的:
Project/
----bin/
----build/
----include/
----main.h
----part1.h
----part2.h
----part3.h
----src/
----main.cpp
----part1.cpp
----Subdir/
----part2.c
----Subdir2/
----part3.cpp
我想要的是我的 makefile 中的一个规则,它将在我的 src 目录中找到所有 .cpp 和 .c 文件,并将它们编译到构建目录中的对象的平面目录中。目前我的makefile中有以下内容,但这似乎错过了一些cpp文件:
BUILDDIR = build
$(BUILDDIR)/%.o : src/**/%.cpp | $(BUILDDIR)
$(BUILDDIR)/%.o : src/%.cpp | $(BUILDDIR)
$(CXX) $(CFLAGS) -c $< -o $@ $(INCS)
$(BUILDDIR)/%.o : src/**/%.c | $(BUILDDIR)
$(BUILDDIR)/%.o : src/%.c | $(BUILDDIR)
$(CC) $(CFLAGS) -c $< -o $@ $(INCS)
在我运行 make -n 的那一刻,它似乎检测到了 main.cpp 和 part1.cpp,但没有检测到子目录中的。然后 Make 继续尝试根据 Makefile 中的后续规则加载文件。
由于项目中的文件数量,我宁愿不手动编写它们的列表,但如果涉及到,我可能不得不这样做。
【问题讨论】: