项目依赖顺序 - VS2013
project dependencies order - VS2013
我的项目依赖顺序应该是:
a.lib取决于ab.lib,a.lib取决于ac.lib
或
ab.lib取决于a.lib,ac.lib取决于a.lib
来自 a.lib 包含其他库使用的基础 classes/functions
文件a.h
class A
{
public:
virtual void Update();
// base function declarations here
// ...
}
来自 ab.lib 覆盖、实现和扩展 class A
文件b.h
#include "a.h"
class B : public A
{
public:
// overridden functions here
// ...
void Update();
}
来自 ac.lib 覆盖、实现和扩展 class A
文件c.h
#include "a.h"
class C : public A
{
public:
// overridden functions here
// ...
void Update();
}
测试了一个类似但比这个简化版本更复杂的场景 Visual Studio 2013 似乎并不关心我设置依赖项的方式。这让我很担心。
感谢您提供的任何帮助。
Let's just say class A's declaration is in a.h
How do you compile ab.cpp (contains class B's definition), by #include'ing "a.h"?
How do you compile ac.cpp (contains class C's definition), by #include'ing "a.h"?
对吗?
这意味着已经设置了编译时依赖项,因此 VS 2013 不会报错。
ab.lib depends on a.lib, ac.lib depends on a.lib
- 此项目依赖项的顺序是正确的,因为当您尝试构建 ab.lib 时,VS 2013 将首先检查 a.lib 是否是最新的,如果找到 a.lib最新,然后 VS 继续构建 ab.lib。如果不是 a.lib 首先构建。这是显而易见的,因为 ab.lib (class B) 依赖于 a.lib (class A)。 ac.lib 也一样。
希望这能说明问题。
我的项目依赖顺序应该是:
a.lib取决于ab.lib,a.lib取决于ac.lib
或
ab.lib取决于a.lib,ac.lib取决于a.lib
来自 a.lib 包含其他库使用的基础 classes/functions
文件a.h
class A
{
public:
virtual void Update();
// base function declarations here
// ...
}
来自 ab.lib 覆盖、实现和扩展 class A
文件b.h
#include "a.h"
class B : public A
{
public:
// overridden functions here
// ...
void Update();
}
来自 ac.lib 覆盖、实现和扩展 class A
文件c.h
#include "a.h"
class C : public A
{
public:
// overridden functions here
// ...
void Update();
}
测试了一个类似但比这个简化版本更复杂的场景 Visual Studio 2013 似乎并不关心我设置依赖项的方式。这让我很担心。
感谢您提供的任何帮助。
Let's just say class A's declaration is in a.h
How do you compile ab.cpp (contains class B's definition), by #include'ing "a.h"?
How do you compile ac.cpp (contains class C's definition), by #include'ing "a.h"?
对吗?
这意味着已经设置了编译时依赖项,因此 VS 2013 不会报错。
ab.lib depends on a.lib, ac.lib depends on a.lib
- 此项目依赖项的顺序是正确的,因为当您尝试构建 ab.lib 时,VS 2013 将首先检查 a.lib 是否是最新的,如果找到 a.lib最新,然后 VS 继续构建 ab.lib。如果不是 a.lib 首先构建。这是显而易见的,因为 ab.lib (class B) 依赖于 a.lib (class A)。 ac.lib 也一样。
希望这能说明问题。