如何确定源文件的编译顺序?

时间:2009-04-01 14:46:46

标签: c makefile compilation nmake

我有一个包含许多* .c文件的工作区,我编译它们。 (我可以使用任何工具链说MSVC6.0,或gcc等)

首先编译哪个源文件?

如何确定随后编译的文件的顺序?

5 个答案:

答案 0 :(得分:9)

C标准未规定编译顺序。

由于不需要像C ++那样构造全局对象,因此不存在编译顺序与C相关的情况。

答案 1 :(得分:5)

VC :按项目文件夹,然后按字母顺序排列 GCC :根据make文件顺序

为什么这很重要?,完成顺序不会计量并且不会影响最终的构建结果。

答案 2 :(得分:5)

通常,这在任何地方都没有指定。特别是当使用例如。并行make,编译的顺序几乎是任意的。

答案 3 :(得分:2)

使用make

  • 目标按照它们出现的顺序进行处理
  • 为每个目标构建了一个依赖关系树,我猜想这个树是在深度优先的情况下遍历的,并且具有后期评估(似乎是唯一可行的方式,但我找不到任何指定此内容的方法。文件)

作为jpalecek suggests,并发构建可能更复杂。


GNU的一些引用使文档成为:

  

目标的双冒号规则按它们在makefile中出现的顺序执行。

...

  

如果您指定了多个目标,请按照您为其命名的顺序依次制作流程。

答案 4 :(得分:1)

如果重要,那么你真的需要在你的makefile中设置依赖项,以确保在其他文件之前构建一些依赖项。你真的应该先问问自己为什么重要。