Составьте список проектов с помощью msbuild.exe - PullRequest
0 голосов
/ 11 октября 2019

У меня есть решение VS, которое содержит n- C++ projects. Есть ли способ позволить msbuild.exe скомпилировать определенное подмножество проектов через командную строку?

msbuild.exe foo.sln /thisFlagWouldBeCool:project1;project2

Я пробовал флаг /t для целей, но, похоже, этого не происходит, так как целине проекты?

1 Ответ

0 голосов
/ 11 октября 2019

1. См. Как: создавать конкретные цели в решениях с помощью MSBuild.exe . Как говорится, вы можете использовать команду вроде:

msbuild SlnFolders.sln -target:NotInSlnfolder:Rebuild;NewFolder\InSolutionFolder:Clean

Более конкретно, если у вас есть Project A, B, C в том же решении (Test.sln), для построения только A и B, вы можете использовать команду вроде:

msbuild Test.sln /t:A;B /p:Configuration="xx" /p:Platform="xx"

Примечание : Чтобы построить таким образом, мы должны убедиться, что A.xxproj и B.xxproj определены в файле xx.sln. По крайней мере, для VS, если мы создадим новый Project C, xx.sln не будет обновляться, пока мы не нажмем кнопку save all.

2. И вот еще одно направление, которое подходит для некоторых конкретный сценарий:

Мы можем щелкнуть правой кнопкой мыши узел Solution в VS, выбрать add project=>empty project, чтобы добавить пустой проект в решение, назовем его MyBuildTool project. Загрузите его, чтобы отредактировать егоMyBuildTool.vcxproj файл, добавьте этот вид скрипта внизу (на вкладке Project):

  <!--If you're trying to build subset  of the solution, any build the projects with different settings-->
  <Target Name="CustomBuild" AfterTargets="build">
    <MSBuild Projects="..\**\B2.vcxproj" Properties="Configuration=Debug;Platform=x64;OutDir=xxx"/>
    <MSBuild Projects="..\**\A2.vcxproj" Properties="Configuration=Release"/>
    ...
  </Target>

  <!--If you're building several projects in same settings-->
  <Target Name="CustomBuild" AfterTargets="build">
    <ItemGroup>
      <ProjectsToBuild Include="..\**\A1.vcxproj"/>
      <ProjectsToBuild Include="..\**\B1.vcxproj"/>
    </ItemGroup>
    <MSBuild Projects="@(ProjectsToBuild)" Properties="Configuration=Debug" BuildInParallel="true"/>
  </Target>
</Project>

Тогда MyBuildTool.vcxproj теперь является нашим скриптом сборки, если в какой-то конкретной ситуации нам нужнопостроить несколько проектов, мы можем просто запустить команду msbuild.exe MyBuildTool.vcxproj. Это зависит от использования MSBuild Task .

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