如何在几个目录中使用Makefile for Code组织构建过程

时间:2013-11-21 09:39:24

标签: makefile gnu-make

我的Fortran-Code的结构如下:

有两个文件夹(包含多个子目录)

1.

/home/user/general_part 

其中包含一些非常通用的文件,应该在程序的多个版本中使用。 文件:(带相对路径)

- mainsubdir / main.F

- subdir1 / file1.F

- subdir1 / headerfile1.h

2.

/home/user/special_part/special_case1

文件所在的位置依赖于案例。

文件:(带相对路径)

- subdir2 / file2.F

- subdir2 / headerfile2.h

- subdir3 / file3.F


我如何组织构建过程?

我应该在每个目录中使用多个makefile吗?

对象文件应该放在哪里(尤其是常规文件中的文件)?

我的目标是我可以从目录中启动构建过程:

/home/user/special_part/special_case

使用简单的 make 或一个小脚本。

所以最后我应该可以使用1中的常规文件和位于的几个特殊文件来构建一个程序:

/home/user/special_part/special_case1
/home/user/special_part/special_case2
...

1 个答案:

答案 0 :(得分:2)

没有人回答的原因可能是因为这个问题太笼统了。更加详细一些。

说出类似的话:“这是我想要构建的程序,这是我的makefile,请批评我的makefile”。

  1. 您可以按照自己喜欢的方式进行组织,只要它符合逻辑且一致。我在

    中提出了一些初学者指南

    https://stackoverflow.com/questions/19816058/makefile-fibonacci/19821801#19821801

  2. 没有。 Make是真正的设计,并且使用单个makefile工作得最好。您可以在每个目录中包含相关的makefile 片段,这些片段包含在主makefile中。每个子目录中都没有完整的makefile。谷歌的经典论文“递归使被认为有害”,看看为什么会如此。

  3. 您可以将结果放在任何您想要的位置,有些人可以将结果与源,一些放在一个单独的目录中。只需以一些逻辑和一致的方式放置结果。中间文件也是如此,例如目标文件。