학습
모듈
새 .NET 프로젝트 만들기 및 패키지 종속성 사용 - Training
.NET 프로젝트를 만들고 프로젝트에서 패키지를 추가하고 패키지 종속성을 관리하는 방법을 알아봅니다. Visual Studio Code를 통해 C# 애플리케이션에 라이브러리 및 도구를 추가하려면 .NET Core CLI 및 NuGet 레지스트리를 사용합니다.
팁
종속성을 설치하는 권장 방법은 "매니페스트 파일에서 종속성 설치"를 참조하세요.
경고
일부 vcpkg 기능은 클래식 모드에서 사용할 수 없습니다.
vcpkg에는 클래식 모드와 매니페스트 모드의 두 가지 작업 모드가 있습니다. 이 문서에서는 클래식 모드를 사용하여 패키지를 설치하는 방법을 설명합니다. 대부분의 사용자에게는 매니페스트 모드를 대신 사용하는 것이 좋습니다.
클래식 모드에서는 vcpkg를 명령줄 인터페이스로 사용하여 공통 설치 디렉터리에 종속성을 설치합니다. 일반적으로 vcpkg의 설치 디렉터리가 있는 위치에 %VCPKG_ROOT%
있습니다%VCPKG_ROOT%/installed
.
이 자습서에서는 다음을 알아봅니다.
새 폴더에서 다음 내용으로 명명된 main.cxx
원본 파일을 만듭니다.
#include <cxxopts.hpp>
#include <fmt/format.h>
#include <range/v3/view.hpp>
namespace view = ranges::views;
int fib(int x)
{
int a = 0, b = 1;
for (int it : view::repeat(0) | view::take(x))
{
(void)it;
int tmp = a;
a += b;
b = tmp;
}
return a;
}
int main(int argc, char **argv)
{
cxxopts::Options options("fibo", "Print the fibonacci sequence up to a value 'n'");
options.add_options()("n,value", "The value to print to", cxxopts::value<int>()->default_value("10"));
auto result = options.parse(argc, argv);
auto n = result["value"].as<int>();
for (int x : view::iota(1) | view::take(n))
{
fmt::print("fib({}) = {}\n", x, fib(x));
}
}
코드는 오픈 소스 라이브러리를 cxxopts
참조합니다. . fmt
range-v3
https://github.com/Microsoft/vcpkg
이 단계에서는 프로젝트를 빌드할 때마다 프로젝트 종속성이 자동으로 설치되거나 복원되도록 vcpkg를 CMake 또는 MSBuild와 통합하는 방법을 보여 줍니다.
다른 빌드 시스템을 사용하는 경우 다음 단계인 종속성 설치로 건너뜁니다.
MSBuild 프로젝트에서 vcpkg를 사용하려면 다음 명령을 실행합니다.
vcpkg integrate install
MSBuild 통합을 vcpkg integrate install
처음으로 사용하도록 설정하려는 경우에만 명령을 실행하면 됩니다. 이렇게 하면 모든 기존 및 향후 프로젝트에 MSBuild 통합이 가능합니다. MSBuild 시스템 전체 통합을 제거하는 데 사용합니다 vcpkg integrate remove
.
이 통합 메서드는 vcpkg 설치 패키지를 다음 프로젝트 속성에 자동으로 추가합니다. Include Directories
Link Directories
Link Libraries
또한 필요한 모든 DLL이 빌드 출력 폴더에 복사되도록 하는 빌드 후 작업을 만듭니다. Visual Studio 2015 이상에서 사용하는 모든 솔루션 및 프로젝트에 대해 작동합니다.
코드는 오픈 소스 라이브러리를 cxxopts
참조합니다. , fmt
및 range-v3
; 모두 vcpkg 공용 레지스트리에서 https://github.com/Microsoft/vcpkg사용할 수 있습니다.
이러한 패키지를 설치하려면 이 명령을 사용합니다 vcpkg install
.
vcpkg install cxxopts fmt range-v3
$ ./vcpkg install cxxopts fmt range-v3
Computing installation plan...
The following packages will be built and installed:
cxxopts:x64-windows -> 3.1.1
fmt:x64-windows -> 10.0.0
range-v3:x64-windows -> 0.12.0#1
* vcpkg-cmake:x64-windows -> 2023-05-04
* vcpkg-cmake-config:x64-windows -> 2022-02-06#1
Additional packages (*) will be modified to complete this operation.
(omitted)
cxxopts provides CMake targets:
# this is heuristically generated, and may not be correct
find_package(cxxopts CONFIG REQUIRED)
target_link_libraries(main PRIVATE cxxopts::cxxopts)
The package fmt provides CMake targets:
find_package(fmt CONFIG REQUIRED)
target_link_libraries(main PRIVATE fmt::fmt)
# Or use the header-only version
find_package(fmt CONFIG REQUIRED)
target_link_libraries(main PRIVATE fmt::fmt-header-only)
range-v3 provides CMake targets:
# this is heuristically generated, and may not be correct
find_package(range-v3 CONFIG REQUIRED)
target_link_libraries(main PRIVATE range-v3::meta range-v3::concepts range-v3::range-v3)
중요
설치된 패키지의 삼중 항목이 프로젝트의 구성과 일치하는지 확인합니다. 64비트 프로젝트 또는 x86-windows
32비트 프로젝트에 사용하거나 x86-windows-static
x64-windows-static
사용합니다x64-windows
.
시스템 전체 통합을 사용하도록 설정하면 프로젝트를 빌드하기만 하면 msbuild
됩니다.
PS D:\projects\manifest-example> msbuild
MSBuild version 17.7.0-preview-23319-02+6829506b8 for .NET Framework
Build started 8/13/2023 3:07:36 PM.
Project "D:\projects\manifest-example\manifest-example.sln" on node 1 (default targets).
ValidateSolutionConfiguration:
(omitted)
PrepareForBuild:
(omitted)
InitializeBuildStatus:
(omitted)
ComputeStdModulesCompileInputs:
(omitted)
SetModuleDependencies:
VcpkgTripletSelection:
Using triplet "x64-windows" from "D:\vcpkg\installed\x64-windows\"
Using normalized configuration "Debug"
ClCompile:
(omitted)
Link:
(omitted)
AppLocalFromInstalled:
pwsh.exe -ExecutionPolicy Bypass -noprofile -File "D:\vcpkg\scripts\buildsystems\msbuild\applocal.ps1" "D:\projects\manifest-example\x64\Debug\manifest-example.exe"
"D:\vcpkg\installed\x64-windows\debug\bin" "x64\Debug\manifest-example.tlog\manifest-example.write.1u.tlog" "x64\Debug\vcpkg.applocal.log"
D:\projects\manifest-example\x64\Debug\fmtd.dll
FinalizeBuildStatus:
Deleting file "x64\Debug\manifest-example.tlog\unsuccessfulbuild".
Touching "x64\Debug\manifest-example.tlog\manifest-example.lastbuildstate".
Done Building Project "D:\projects\manifest-example\manifest-example.vcxproj" (default targets).
Done Building Project "D:\projects\manifest-example\manifest-example.sln" (default targets).
Build succeeded.
이 자습서에서는 명령줄 인터페이스로 vcpkg를 사용하여 간단한 프로젝트에 대한 종속성을 설치했습니다.
다음에 시도할 몇 가지 추가 작업은 다음과 같습니다.
vcpkg 피드백
vcpkg은(는) 오픈 소스 프로젝트입니다. 다음 링크를 선택하여 피드백을 제공해 주세요.
학습
모듈
새 .NET 프로젝트 만들기 및 패키지 종속성 사용 - Training
.NET 프로젝트를 만들고 프로젝트에서 패키지를 추가하고 패키지 종속성을 관리하는 방법을 알아봅니다. Visual Studio Code를 통해 C# 애플리케이션에 라이브러리 및 도구를 추가하려면 .NET Core CLI 및 NuGet 레지스트리를 사용합니다.