Makefile,在src目录树中查找源代码并在构建文件中编译为.o

时间:2015-05-11 08:53:19

标签: c++ c makefile

我目前正在尝试为我继承的项目重新编写一个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文件,并将它们编译到build目录中对象的平面目录中。目前我的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,但没有检测到子目录中的那些。然后继续根据Makefile中的后续规则尝试加载文件。

由于项目中的文件数量,我宁愿不手动编写它们的列表,但如果涉及到我可能需要的那样。

1 个答案:

答案 0 :(得分:0)

wildcard功能在这里对您有用。

另见

  

Sources from subdirectories in Makefile