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# 源?