порядок зависимостей проекта — VS2013

должен ли мой порядок зависимости проекта быть:

a.lib зависит от ab.lib, a.lib зависит от ac.lib

или же

ab.lib зависит от a.lib, ac.lib зависит от a.lib

от a.lib содержит базовые классы / функции, используемые другими библиотеками

ФАЙЛ a.h

class A
{
public:
virtual void Update();

// base function declarations here
// ...
}

от ab.lib переопределяет, реализует и расширяет класс A

ФАЙЛ б.ч

#include "a.h"class B : public A
{
public:
// overridden functions here
// ...
void Update();
}

от ac.lib переопределяет, реализует и расширяет класс A

ФАЙЛ c.h

#include "a.h"class C : public A
{
public:
// overridden functions here
// ...
void Update();
}

После тестирования аналогичного, хотя и более сложного сценария, чем в этой упрощенной версии, Visual Studio 2013, похоже, не заботится о том, в какую сторону я настроил свои зависимости. Это меня беспокоит.

Спасибо за любую помощь, которую вы можете предоставить.

1

Решение

Давайте просто скажем, что объявление класса A находится в a.h

Как вы компилируете ab.cpp (содержит определение класса B), # include’ing с «a.h»?
Как вы компилируете ac.cpp (содержит определение класса C), # include’ing с «a.h»?

Правильно?

Это означает, что зависимости времени компиляции уже установлены, поэтому VS 2013 не жалуется.

ab.lib зависит от a.lib, ac.lib зависит от a.lib

  • Эта зависимость проекта является правильной, поскольку при попытке собрать ab.lib VS 2013 сначала проверит, обновлен ли a.lib, найден ли a.lib, а затем VS приступит к сборке. ab.lib. Если нет, то сначала создается файл .lib. Это очевидно, поскольку ab.lib (класс B) зависит от a.lib (класс A). То же самое с ac.lib.

Надеюсь, это проясняет.

1

Другие решения


По вопросам рекламы [email protected]