MSBuild 프로젝트의 vcpkg

통합 방법

사용자 전체 통합

MSBuild 프로젝트에서 vcpkg를 사용하려면 다음 명령을 실행합니다.

vcpkg integrate install

MSBuild 통합을 vcpkg integrate install 처음으로 사용하도록 설정하려는 경우에만 명령을 실행하면 됩니다. 이렇게 하면 모든 기존 및 향후 프로젝트에 MSBuild 통합이 가능합니다.

vcpkg 인스턴스가 여러 개 있는 경우 명령을 사용하여 vcpkg integrate install MSBuild 내에서 사용되는 vcpkg 인스턴스를 업데이트할 수 있습니다. MSBuild 사용자 전체 통합을 제거하는 데 사용합니다 vcpkg integrate remove .

이 통합 메서드는 vcpkg 설치 패키지를 디렉터리 포함, 링크 디렉터리 및 링크 라이브러리와 같은 프로젝트 속성에 자동으로 추가합니다. 또한 필요한 모든 DLL이 빌드 출력 폴더에 복사되도록 하는 빌드 후 작업을 만듭니다. Visual Studio 2015 이상에서 사용하는 모든 솔루션 및 프로젝트에 대해 작동합니다.

이 작업은 대부분의 라이브러리에 대해 수행해야 하는 작업입니다. 그러나 일부 라이브러리는 재정의와 같은 충돌하는 동작을 수행합니다 main(). 프로젝트별로 원하는 충돌하는 옵션을 선택해야 하므로 링커 입력에 해당 라이브러리를 수동으로 추가해야 합니다.

다음은 수동 연결이 필요한 몇 가지 예입니다(전체 목록이 아님).

  • Gtest는 gtest, gmock, gtest_maingmock_main
  • SDL2는 SDL2main
  • SFML에서 제공하는 sfml-main
  • Boost.Test가 제공합니다. boost_test_exec_monitor

설치된 모든 패키지에 대한 전체 목록을 얻으려면 다음을 실행 vcpkg owns manual-link합니다.

가져오기 .props.targets

vcpkg는 및 파일을 각 .vcxproj프로젝트로 명시적으로 가져와 scripts/buildsystems/vcpkg.propsscripts/buildsystems/vcpkg.targets MSBuild 프로젝트에 통합할 수도 있습니다. 상대 경로를 사용하면 vcpkg를 하위 코드에서 사용하고 사용자가 실행할 git clone때 자동으로 획득할 수 있습니다.

솔루션의 모든 프로젝트에 이러한 파일을 추가하는 가장 쉬운 방법은 리포지토리의 루트에 파일을 만드는 Directory.Build.propsDirectory.Build.targets 것입니다.

다음 예제에서는 하위 코드 microsoft/vcpkg 가 있는 리포지토리의 루트에 vcpkg있다고 가정합니다.

예제 Directory.Build.props

<Project>
 <Import Project="$(MSBuildThisFileDirectory)vcpkg\scripts\buildsystems\msbuild\vcpkg.props" />
</Project>

예제 Directory.Build.targets

<Project>
 <Import Project="$(MSBuildThisFileDirectory)vcpkg\scripts\buildsystems\msbuild\vcpkg.targets" />
</Project>

자세한 내용은 공식 MSBuild 설명서의 빌드 사용자 지정 섹션을 Directory.Build.targetsDirectory.Build.props참조하세요.

연결된 NuGet 패키지

참고 항목

이 접근 방식은 다른 프로젝트와 공유하기 어렵기 때문에 새 프로젝트에는 권장되지 않습니다. 이식 가능한 자체 포함 NuGet 패키지는 다음을 export command참조하세요.

VS 프로젝트는 NuGet 패키지를 통해 통합할 수도 있습니다. 이렇게 하면 프로젝트 파일이 수정되므로 오픈 소스 프로젝트에는 이 방법을 사용하지 않는 것이 좋습니다.

PS D:\src\vcpkg> .\vcpkg integrate project
Created nupkg: D:\src\vcpkg\scripts\buildsystems\vcpkg.D.src.vcpkg.1.0.0.nupkg

With a project open, go to Tools->NuGet Package Manager->Package Manager Console and paste:
    Install-Package vcpkg.D.src.vcpkg -Source "D:/src/vcpkg/scripts/buildsystems"

참고 항목

생성된 NuGet 패키지에는 실제 라이브러리가 포함되어 있지 않습니다. 대신 vcpkg 설치에 대한 바로 가기(또는 symlink)처럼 작동하며 라이브러리에 대한 변경 내용(설치/제거)으로 "자동으로" 업데이트됩니다. NuGet 패키지를 다시 생성하거나 업데이트할 필요가 없습니다.

일반 구성

VcpkgEnabled (Vcpkg 사용)

프로젝트에 대한 vcpkg 통합을 명시적으로 사용하지 않도록 설정하려면 "false"로 설정할 수 있습니다.

VcpkgConfiguration (Vcpkg 구성)

구성 이름이 너무 복잡하여 vcpkg가 올바르게 추측할 수 없는 경우 이 속성을 vcpkg에 Release 할당하거나 Debug 사용하려는 라이브러리의 변형을 vcpkg에 명시적으로 알릴 수 있습니다.

VcpkgEnableManifest (Vcpkg 매니페스트 사용)

로컬 vcpkg.json 파일에서 사용하려면 이 속성을 설정 true 해야 합니다. 로 false설정하면 모든 로컬 vcpkg.json 파일이 무시됩니다.

이는 현재 기본값으로 설정 false되지만 나중에는 기본값으로 설정 true 됩니다.

VcpkgTriplet (삼중자)

이 속성은 등에서 x64-windows-static 라이브러리를 사용 하는 삼중자를 제어 합니다 arm64-windows.

명시적으로 설정되지 않은 경우 vcpkg는 Visual Studio 설정에 따라 올바른 트리플렛을 추론합니다. vcpkg는 동적 라이브러리 연결 및 동적 CRT 연결을 사용하는 삼중자만 추론합니다. 정적 종속성을 사용하거나 정적 CRT(/MT)를 사용하려면 수동으로 세 쌍둥이를 설정해야 합니다.

MSBuild 세부 정보를 표준 이상으로 설정하여 자동으로 추론된 삼중자를 볼 수 있습니다.

바로 가기: Ctrl+Q "빌드 및 실행"

도구 -> 옵션 -> 프로젝트 및 솔루션 -> 빌드 및 실행 -> MSBuild 프로젝트 빌드 출력 세부 정보 표시

삼중자 참조

VcpkgHostTriplet (호스트 트리플렛)

호스트 종속성을 확인하는 데 사용할 사용자 지정 트리플렛으로 설정할 수 있습니다.

설정되지 않은 경우 기본값은 "네이티브" 삼중자(x64-windows)입니다.

호스트 종속성도 참조하세요.

VcpkgInstalledDir (설치된 디렉터리)

이 속성은 vcpkg가 라이브러리를 설치하고 사용할 위치를 정의합니다.

매니페스트 모드에서 이 기본값은 .입니다 $(VcpkgManifestRoot)\vcpkg_installed\$(VcpkgTriplet)\. 클래식 모드에서는 이 기본값이 .로 설정 $(VcpkgRoot)\installed\됩니다.

VcpkgApplocalDeps (앱 로컬로 DLL 배포)

이 속성은 vcpkg 설치 트리에서 프로젝트 출력 디렉터리로의 종속 DLL 검색 및 복사를 사용하거나 사용하지 않도록 설정합니다.

VcpkgXUseBuiltInApplocalDeps (기본 제공 앱-로컬 배포 사용)

이 속성을 사용하도록 설정하면 앱에서 로컬로 DLL을 배포할 때 vcpkg의 실험적인 기본 제공 앱 로컬 DLL 배포 구현을 사용합니다. 이 속성은 제거되며 기본 제공 구현이 더 이상 실험적이 아닐 때 영향을 주지 않습니다.

false인 경우에는 $(VcpkgApplocalDeps) 이 속성이 적용되지 않습니다.

매니페스트 모드 구성

MSBuild에서 매니페스트(vcpkg.json)를 사용하려면 먼저 위의 통합 방법 중 하나를 사용해야 합니다. 그런 다음, 프로젝트 파일 위에 vcpkg.json 추가하고(예: 원본 리포지토리의 루트에) 속성을 VcpkgEnableManifesttrue설정합니다. 프로젝트 속성 Vcpkg Use Vcpkg Manifest의 IDE를 통해 이 속성을>설정할 수 있습니다.> vcpkg 속성 페이지를 보려면 IDE를 다시 로드해야 할 수 있습니다.

vcpkg는 프로젝트의 빌드 중에 실행되고 파일 인접 vcpkg.json 에 나열된 종속성을 vcpkg_installed/$(VcpkgTriplet)/ 설치합니다. 그러면 이러한 라이브러리가 MSBuild 프로젝트에 자동으로 포함되고 연결됩니다.

알려진 문제

  • Visual Studio 2015는 파일 및 vcpkg-configuration.json 파일에 대한 편집 내용을 vcpkg.json 올바르게 추적하지 않으며 편집하지 않는 한 변경 내용에 .cpp 응답하지 않습니다.

VcpkgAdditionalInstallOptions (추가 옵션)

매니페스트를 사용하는 경우 이 옵션은 기본 vcpkg 도구 호출에 전달할 추가 명령줄 플래그를 지정합니다. 다른 옵션을 통해 아직 노출되지 않은 기능에 액세스하는 데 사용할 수 있습니다.

VcpkgManifestInstall (Vcpkg 종속성 설치)

이 속성은 프로젝트 빌드 중에 자동 종속성 복원을 사용하지 않도록 설정할 false 수 있습니다. 종속성은 vcpkg 명령줄을 통해 개별적으로 수동으로 복원해야 합니다.