1
병렬

에서 작업 배치 (같은 프로젝트)을하자 수행하는 방법의 내가이 정의은 MSBuild -

<MSBuild 
    Projects="$(MSBuildProjectFile)" 
    Condition="'@(FilesToCompile)' != ''" 
    Targets="buildcpp" 
    Properties="CPPFILE=%(FilesToCompile.FullPath);OBJFILE=$(ObjectFolder)\%(FilesToCompile.Filename).doj;IncludeDirs=$(IncludeDirs)" 
/> 

이 목표 한 번 FilesToCompile에서 각 파일에 대해, task batching로 인해 여러 번 실행을 말한다. 중요한 점은 각 호출이 완전히 독립적이어서 병렬화에 완벽하다는 것입니다.

질문

은 어떻게 task batching은 "병렬 모드"를 가능합니까?

하지 중복

내가 서로 다른 특성을 가진 동일한 대상 여러 번 호출 할 값와 나는 batching이 병렬로 수행 될 필요가, 그렇게합니다.

링크 된 질문은 배치 작업을 수행하지 않으며 다른 프로젝트를 사용합니다.

+1

가능한 여러 개의 구성을 병렬로 만들 수 있습니까? (https://stackoverflow.com/questions/12984882/how-can-i-build-multiple-configurations-in-parallel) – stijn

+0

나는 ' 이것이 링크 된 복제본과 어떻게 다른지보십시오 : 답변의 샘플 코드를 사용해 보셨습니까? 동일한 프로젝트를 다양한 속성으로 여러 번 병렬로 구축합니다. 정확히 무엇을 요구하고 있습니까? – stijn

+0

@stijn 샘플 코드는 ItemGroup'FilesToCompile.FullPath'를 반복하지 않습니다. 링크 된 솔루션을 사용하면 전체 항목 그룹을 수동으로 "풀어"야합니다. – Adrian

답변

0

MSBuild는 CL 수준에서 C/C++ 프로젝트뿐만 아니라 프로젝트 수준에서 병렬 처리를 지원합니다. 귀하의 경우에 MSBuild가 병렬 처리를 사용하게하려면 여러 프로젝트를 제공하고 (i) 단일 프로젝트의 종속성 또는 (ii) 정의 된 빌드 그래프가있는 솔루션으로 MSBuild에 전달해야합니다. 또한 /m 또는 /maxcpucount을 명령 줄에서 MSBuild로 전달해야하며 /nodereuse:false 또는 /nr:false을 사용하는 것이 좋습니다.

원칙적으로 타겟을 한 번 호출 할 때마다 여러 프로젝트를 생성/생성해야합니다.

+0

https://stackoverflow.com/questions/12984882/how-can-i-build-multiple-configurations-in-parallel 참고 : 여러 프로젝트를 만들 필요가 없습니다. – stijn

0

어떻게이 작업에 "병렬 모드"를 활성화 할 수 있습니까? 실행하려면

우리는 MSBuild를 작업에서 명령 프롬프트 또는 BuildInParallel 작업 매개 변수에 /maxcpucount 스위치를 사용할 수 병렬로 만듭니다. 따라서 작업에 BuildInParallel 작업 매개 변수를 사용해야합니다.

BuildInParallel 작업 매개 변수의 기본값은 false, 우리는 true로 설정 필요 :

<PropertyGroup> 
    <BuildInParallel Condition="'$(BuildInParallel)' == ''">true</BuildInParallel> 
</PropertyGroup> 

<MSBuild 
    Projects="$(MSBuildProjectFile)" 
    Condition="'@(FilesToCompile)' != ''" 
    Targets="buildcpp" 
    BuildInParallel="$(BuildInParallel)" 
    Properties="CPPFILE=%(FilesToCompile.FullPath);OBJFILE=$(ObjectFolder)\%(FilesToCompile.Filename).doj;IncludeDirs=$(IncludeDirs)" 
/> 

더 많은 상세 정보를 원하시면 Building Multiple Projects in Parallel with MSBuildnew parallel task in the MSBuild Extension Pack를 참조하십시오.

+1

OP에 질문에 답해주세요. OP는 같은 프로젝트를 다른 속성으로 여러 번 빌드하고 병렬로 수행하려고합니다. – stijn

+0

@stijn에 동의합니다. ** 중복 가능성이있는 이유를 설명하기 위해 질문을 업데이트했습니다. ** – Adrian