我在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先编译?什么影响源文件的编译顺序?
答案 0 :(得分:3)
该依赖是在链接时,而不是编译时(因此不会在此处显示)。
构建脚本中的位置会影响编译顺序(并且除了编译时依赖性之外没有其他假设),但这部分是不真实的,因为构建可以并行化。也就是说,A和B可以同时构建在两个不同的核心上。