2

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

先编译哪个源文件?

随后要编译的文件的顺序是如何决定的?

4

5 回答 5

10

C 标准未指定编译顺序。

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

于 2009-04-01T17:02:17.553 回答
5

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

于 2009-04-01T14:58:54.323 回答
5

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

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

于 2009-04-01T14:51:24.997 回答
2

make

  • 目标按照它们出现的顺序进行处理
  • 为每个目标构建了一个依赖树,我猜想该树是通过后序评估深度优先遍历的(似乎是它工作的唯一方法,但我在文档中找不到任何指定的内容)

正如jpalecek 所暗示的,并发构建可能更复杂。


GNU make 文档中的一些引用:

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

...

如果您指定了多个目标,请按照您命名它们的顺序依次创建每个目标。

于 2009-04-01T14:59:55.693 回答
1

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

于 2009-04-02T00:40:30.227 回答