2015-05-18 2 views
1

Visual studio не поддерживает родные проекты, так как поддерживает проекты .NET. В том смысле, что, например, при создании статической (.lib) библиотеки. Включение статической библиотеки и каталога, содержащего заголовки, должно выполняться вручную.Несколько зависимых родных проектов в визуальной студии

Для одного проекта это не проблема. Но если вы похожи на меня, управляя несколькими проектами. Многие из них несколько депрессированы. Это становится огромной проблемой для управления всем этим.

Мне было интересно, есть ли какой-либо официальный «одобренный Microsoft» подход к этому. А если нет, то каков наилучший способ справиться с этой ситуацией. Предполагается, что будут выполнены следующие условия:

  • несколько статических библиотек (.lib). Которые включены в несколько решений
  • несколько динамических библиотек (.dll) проектов. Которые включены в несколько решений
  • несколько приложений, использующих одни и те же библиотеки (как динамические и статические), в одном решении

ответ

1

Мое личное решение проблемы заключается в следующем.

Каждый проект создания двоичного кода строит:

$(SolutionDir)build\$(Configuration)\` 

Каждый проект создания статической библиотеки строит:

$(SolutionDir)build\$(Configuration)\Libraries\ 

Промежуточный каталог для всех проектов:

$(SolutionDir)build\$(ProjectName)\$(Configuration)\ 

И выполняет следующую команду предварительной сборки:

Copy /Y "$(ProjectDir)*.h" + "$(ProjectDir)*.hpp"  "$(SolutionDir)build\$(Configuration)\Libraries\" 

Преимущества этой системы включают в себя:

  • Все каталоги проекта размещаются бесплатно билдов (полезно при использовании системы управления версиями). И все двоичные файлы находятся в одном месте.

  • Установка дополнительных включенных каталогов никогда не требуется при использовании выходов из других проектов в одном решении. Динамическую библиотеку не нужно добавлять вообще. И все, что требуется, чтобы включать в себя статическую библиотеку добавляет его в Additional Dependencies поле под:

    Configuration Properties->Linker->Input

Недостатками этой системы включают в себя:

  • Поскольку все заголовочные файлы Скопировано, существует риск их случайного редактирования. Это приводит к потере работы, когда копирование происходит снова.

  • Поскольку настройки для каждого проекта, они должны быть установлены либо проекта

  • библиотеки построены отдельно для каждого решения