Visual Studio 以啥顺序编译源文件?

Posted

技术标签:

【中文标题】Visual Studio 以啥顺序编译源文件?【英文标题】:In what order does Visual Studio compile source files?Visual Studio 以什么顺序编译源文件? 【发布时间】:2013-06-24 16:47:34 【问题描述】:

我在 Visual Studio 2012 中有一个 C++ 库项目,其中包含这些文件

A.h, A.cpp: defines function Do_A();
B.h, B.cpp: defines function Do_B();
C.h, C.cpp: defines function Do_C();

功能是这样实现的

void Do_A()

      Do_B();


void Do_B()

      Do_C();


void Do_C()

     printf("Do C");

这里我想强制 A、B、C 之间的依赖关系。然后我构建。

但是在查看输出窗口时,我看到了

A.cpp
B.cpp
C.cpp

为什么先编译A?什么影响源文件的编译顺序?

【问题讨论】:

顺便说一句,你为什么关心编译顺序? @StefanoSanfilippo 有时我看到 VS 会先编译一个文件,所以我想知道 您不能强制构建顺序。您正在寻找的是一个函数原型。您通常将它们放在 .h 文件中。 谷歌一下,“c++ 函数原型”。你的 C++ 语言书也有介绍,你肯定有一本吗? 您不能强制构建顺序。使用 .h 文件中的函数原型,您不必关心构建顺序 【参考方案1】:

该依赖关系是在链接时,而不是编译时(因此不会在此处显示)。

构建脚本中的位置会影响编译顺序(除了编译时间相关性之外,没有任何假设),但这部分是不正确的,因为构建可以并行化。也就是说,A 和 B 可以同时构建在两个不同的内核上。

【讨论】:

以上是关于Visual Studio 以啥顺序编译源文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio 中组织大型项目(>300 个类)的 F# 源?

Visual Studio 2013下如何编译运行程序?

Visual Studio 2010中的Visual C++如何编译、连接和运行?

Visual Studio 禁用特定目录中文件的警告

Visual Studio 2019怎么编译C语言源程序?

Visual Studio源服务器缓存