Создание проекта Visual Studio C ++ в рамках решения для нескольких платформ. - PullRequest
0 голосов
/ 20 января 2020

У меня есть решение Visual Studio, которое содержит несколько C# проектов и проект C ++.

Проект C ++ правильно сконфигурирован для сборки как для x64, так и для win32 (имеет отдельные выходные каталоги, соответствующие двоичные файлы для 32 и 64 и т. Д.), А конфигурация по умолчанию - x64. C# проекты настроены для любого ЦП.

Как я могу настроить свое решение для построения проекта C ++ для x64 и win32 при создании всего решения?

PS: Пакетная сборка не будет работать в этом случае, потому что мне нужно настроить ее так, чтобы кто-нибудь клонировал репо, будет правильно строить без каких-либо дополнительных настроек

1 Ответ

1 голос
/ 21 января 2020

Как я могу настроить свое решение для сборки проекта C ++ для x64 и win32 при создании всего решения?

Пожалуйста, используйте Batch Build для сборки решение.

1) Сначала щелкните правой кнопкой мыши свое решение и выберите Пакетная сборка .

2) Второе, проверьте проект C ++, который вы хотите построить. Затем вы можете проверить как 64-битный, так и 32-битный для проекта, а также вы можете выбрать Debug или Release для Конфигурация . Наконец, нажмите «Построить» или «Перестроить», чтобы одновременно создавать разные версии выходных файлов.

enter image description here

3) Когда вы fini sh, пожалуйста, откройте папку решения. С моей стороны, папка Debug или Release предназначена только для 32-битных , а папка x64 - для 64-битных .

enter image description here

Обновление 1

Поскольку вы не хотите настраивать параметры VS и затем использовать пакетную сборку, я думаю, что вы можете использовать пользовательскую цель сборки в файле xxxx.vcxproj.

Пожалуйста, добавьте эти цели в xxxx.vcxproj всех проектов C ++ во всем решении.

<Target Name="BuildFunction" AfterTargets="Build">
    <MSBuild Condition="'$(Platform)'=='Win32'" Projects="$(MSBuildProjectFile)" Properties="Platform=x64;PlatFormTarget=x64" RunEachTargetSeparately="true"  />
    <MSBuild Condition="'$(Platform)'=='x64'"   Projects="$(MSBuildProjectFile)" Properties="Platform=Win32;PlatFormTarget=x86" RunEachTargetSeparately="true" />
  </Target>

  <Target Name="CleanAll" AfterTargets="Clean">
    <MSBuild Condition="'$(Platform)'=='Win32'" Projects="$(MSBuildProjectFile)" Targets="Clean" Properties="Platform=x64;PlatFormTarget=x64" RunEachTargetSeparately="true"  />
    <MSBuild Condition="'$(Platform)'=='x64'"   Projects="$(MSBuildProjectFile)" Targets="Clean" Properties="Platform=Win32;PlatFormTarget=x86" RunEachTargetSeparately="true" />

  </Target>

Эти цели зависят от Build или Clean цель. Поэтому, когда вы создаете проект, они всегда будут выполняться позже и встраивать проект в другую версию.

Кроме того, этот метод привязан к вашему решению, поэтому, когда кто-то еще клонирует ваше решение, создайте его непосредственно из своего сценария. или нажмите Build в VS IDE, и затем вы увидите x64 и x86 версии файлов в решении.

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...