一尘不染

在不同目录中包含源文件的Makefile

linux

我有一个目录结构如下的项目:

                         $projectroot
                              |
              +---------------+----------------+
              |               |                |
            part1/          part2/           part3/
              |               |                |
       +------+-----+     +---+----+       +---+-----+
       |      |     |     |        |       |         |
     data/   src/  inc/  src/     inc/   src/       inc/

我应该如何编写一个可以在part / src中(或在任何地方)的makefile来在部分c / c ++源文件中完成/链接?/ src?

我可以做一些事情-I $ projectroot / part1 / src -I $ projectroot / part1 / inc -I $
projectroot / part2 / src …

如果那行得通,有没有更简单的方法来做到这一点。我见过在每个相应部分中都有一个makefile的项目吗?文件夹。[在这篇文章中,我在bash语法中使用了问号]


阅读 451

收藏
2020-06-02

共1个答案

一尘不染

传统的方法是有一个Makefile在每个子目录(中part1part2等),使您能够独立构建它们。此外,Makefile在项目的根目录中有一个用于构建所有内容的目录。“根”
Makefile看起来类似于以下内容:

all:
    +$(MAKE) -C part1
    +$(MAKE) -C part2
    +$(MAKE) -C part3

由于make目标中的每一行都在其自己的shell中运行,因此无需担心遍历目录树或其他目录。

我建议看一下GNU
make手册5.7
;这是非常有帮助的。

2020-06-02