다음을 통해 공유


MSBuild를 사용하여 병렬로 여러 프로젝트 빌드

다중 프로젝트를 빌드하기 위해 MSBuild를 사용하여 병렬로 실행하면 더 빠를 수 있습니다. 병렬에서 빌드를 실행하려면 다음 설정을 다중 코어 또는 다중 프로세서 컴퓨터에서 사용해야 합니다:

  • 명령 프롬프트에서 /maxcpucount 스위치.

  • MSBuild 작업에서 BuildInParallel작업 매개 변수.

참고

명령 줄에서 /verbosity (/v) 스위치는 빌드 성능에 영향을 줄 수 있습니다.빌드 로그 정보의 자세한 정도는 문제 해결을 위해 사용되는 세부 또는 진단으로 설정되어있는 경우 빌드 성능이 저하 될 수 있습니다.자세한 내용은 MSBuild를 사용하여 빌드 로그 가져오기MSBuild 명령줄 참조를 참조하십시오.

/maxcpucount 스위치

시간을 줄이기 위해 /maxcpucount 스위치 또는 /m 을 사용하는 경우 MSBuild는 병렬로 실행될 수 있는 MSBuild.exe 프로세스의 지정된 수를 생성할 수 있습니다. 이러한 프로세스는 "작업자 프로세스" 라고도 알려져있습니다. 각 작업자 프로세스는 가능한 경우 별도의 핵심 또는 프로세서를 사용하여 사용 가능한 다른 프로세서에서 다른 프로젝트를 빌드하는 동시에 프로젝트를 빌드합니다. 예를 들어, 해당 스위치의 값을 "4"로 설정하면 MSBuild에게 프로젝트를 빌드하기 위해 4개의 작업자 프로세스를 만들도록 합니다.

값을 지정 하지 않고 이 /maxcpucount 스위치를 포함 하는 경우, MSBuild는 컴퓨터에 있는 프로세서의 숫자 만큼 사용할 것입니다.

MSBuild 3.5에 소개 된 스위치에 대한 자세한 내용은 MSBuild 명령줄 참조 을 참조하십시오.

다음 예제에서는 세 개의 작업자 프로세스를 사용하도록 MSBuild에 지시 합니다. 이 구성을 사용하면 MSBuild는 동시에 세 개의 프로젝트를 빌드할 수 있습니다.

msbuild.exe myproj.proj /maxcpucount:3

BuildInParallel 작업 매개 변수

BuildInParallel은 MSBuild 작업에 사용할 수 있는 선택적 부울 매개 변수입니다. BuildInParallel을 true(기본값)로 설정하면 가능한 한 많은 프로젝트를 동시에 빌드할 수 있도록 여러 개의 작업자 프로세스가 생성됩니다. 이 작업이 제대로 작동되도록 하려면 /maxcpucount 스위치를 1보다 큰 값으로 설정해야 하며 시스템에 최소한 이중 핵심이나 둘 이상의 프로세서가 있어야 합니다.

microsoft.common.targets에서 가져온 다음 예제에서는 BuildInParallel 매개 변수를 설정하는 방법을 보여 줍니다.

<PropertyGroup>
    <BuildInParallel Condition="'$(BuildInParallel)' == 
        ''">true</BuildInParallel>
</PropertyGroup>
<MSBuild
    Projects="@(_MSBuildProjectReferenceExistent)"
    Targets="GetTargetPath"
    BuildInParallel="$(BuildInParallel)"
    Properties="%(_MSBuildProjectReferenceExistent.SetConfiguration); 
        %(_MSBuildProjectReferenceExistent.SetPlatform)"
    Condition="'@(NonVCProjectReference)'!='' and 
        ('$(BuildingSolutionFile)' == 'true' or 
        '$(BuildingInsideVisualStudio)' == 'true' or 
        '$(BuildProjectReferences)' != 'true') and   
        '@(_MSBuildProjectReferenceExistent)' != ''"
    ContinueOnError="!$(BuildingProject)">
    <Output TaskParameter="TargetOutputs" 
        ItemName="_ResolvedProjectReferencePaths"/>
</MSBuild>

참고 항목

개념

다중 프로세서를 사용하여 프로젝트 빌드

다중 프로세서 인식 로거 작성

기타 리소스

Tuning C++ Build Parallelism blog