トレーニング
モジュール
新しい .NET プロジェクトを作成し、パッケージの依存関係を処理する - Training
.NET プロジェクトを作成し、パッケージを追加して、プロジェクト内のパッケージ依存関係を管理する方法を学習します。 .NET Core CLI と NuGet レジストリを使用して、Visual Studio Code でライブラリとツールを C# アプリケーションに追加します。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
vcpkg には、クラシック モードとマニフェスト モードの 2 つの操作モードがあります。 この記事では、マニフェスト モードを使用してパッケージをインストールする方法について説明します。これは、ほとんどのユーザーに推奨されるワークフローです。
マニフェスト モードでは、プロジェクトの直接依存関係をマニフェスト vcpkg.json
ファイルで宣言します。
マニフェスト ファイルには、すべてのパッケージが共通%VCPKG_ROOT%/installed
ディレクトリにインストールされるクラシック モードとは異なり、依存関係をインストールする独自vcpkg_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));
}
}
このコードは、vcpkg パブリック レジストリhttps://github.com/Microsoft/vcpkgですべて使用できるオープン ソース ライブラリ cxxopts
fmt
、、および range-v3
; を参照します。
これらの依存関係を宣言するには、プロジェクトと同じディレクトリに名前の付いた vcpkg.json
ファイルを作成します。
vcpkg.json
:
{
"dependencies": [
"cxxopts",
"fmt",
"range-v3"
]
}
必要なのは、一覧で直接依存関係を指定すること "dependencies"
だけです。 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 以降を使用するすべてのソリューションとプロジェクトで機能します。
CMake または MSBuild を使用していて、前の手順に従っている場合は、次の手順 「プロジェクトをビルドする」に進むことができます。
別のビルド システムを使用している場合、または依存関係を手動でインストールする場合は、マニフェスト ファイルを含むディレクトリで実行 vcpkg install
するだけです。
PS D:\projects\manifest-example> vcpkg install
Detecting compiler hash for triplet x64-windows...
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.
Installing 1/5 vcpkg-cmake-config:x64-windows...
Installing 2/5 vcpkg-cmake:x64-windows...
Installing 3/5 cxxopts:x64-windows...
Installing 4/5 fmt:x64-windows...
Installing 5/5 range-v3:x64-windows...
Total install time: 48 s
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)
コマンドが完了すると、ビルドされたすべてのパッケージがディレクトリに vcpkg_installed
存在します。 このディレクトリの特定の場所は、ビルド システムによって異なります。通常は、ビルド システムの既定の出力フォルダー内、またはファイルの横にあります vcpkg.json
。
既定では、マニフェスト モードは MSBuild プロジェクトでは無効になっています。
プロジェクトでマニフェストを有効にするには、ファイルでプロパティをVcpkgEnableManifest
.vcxproj
設定します。
<PropertyGroup Label="Vcpkg">
<VcpkgEnableManifest>true</VcpkgEnableManifest>
</PropertyGroup>
または、パラメーターとして渡 msbuild /p:VcpkgEnableManifest=true
すことで、MSBuild 呼び出しでマニフェスト モードを有効にすることもできます。
PS D:\projects\manifest-example> msbuild /p:VcpkgEnableManifest=true
MSBuild version 17.7.0-preview-23319-02+6829506b8 for .NET Framework
Build started 8/11/2023 11:29:50 AM.
Project "D:\projects\manifest-example\manifest-example.sln" on node 1 (default targets).
ValidateSolutionConfiguration:
Building solution configuration "Debug|x64".
Project "D:\projects\manifest-example\manifest-example.sln" (1) is building "D:\projects\manifest-example\manifest-example.vcxproj" (2) on node 1 (default targets).
PrepareForBuild:
(omitted)
InitializeBuildStatus:
(omitted)
ComputeStdModulesCompileInputs:
(omitted)
SetModuleDependencies:
Creating directory "x64\Debug\manifest.ceffc6eb_MD.tlog\".
VcpkgTripletSelection:
Using triplet "x64-windows" from "D:\projects\manifest-example\vcpkg_installed\x64-windows\x64-windows\"
Using normalized configuration "Debug"
VcpkgInstallManifestDependencies:
Installing vcpkg dependencies to D:\projects\manifest-example\vcpkg_installed\x64-windows\
Creating directory "D:\projects\manifest-example\vcpkg_installed\x64-windows\".
"D:\vcpkg\vcpkg.exe" install --x-wait-for-lock --triplet "x64-windows" --vcpkg-root "D:\vcpkg\" "--x-manifest-root=D:\projects\manifest-example\" "--x-install-root=D:\projects\manifest-example\vcpkg_installed\x64-windows\"
"D:\vcpkg\vcpkg.exe" install --x-wait-for-lock --triplet "x64-windows" --vcpkg-root "D:\vcpkg\" "--x-manifest-root=D:\projects\manifest-example\" "--x-install-root=D:\projects\manifest-example\vcpkg_installed\x64-windows\"
Detecting compiler hash for triplet x64-windows...
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
(omitted)
ClCompile:
(omitted)
Link:
(omitted)
AppLocalFromInstalled:
pwsh.exe -ExecutionPolicy Bypass -noprofile -File "D:\vcpkg\scripts\buildsystems\msbuild\applocal.ps1" "D:\projects\manif
est-mode-msbuild\x64\Debug\manifest-example.exe" "D:\projects\manifest-example\vcpkg_installed\x64-windows\x64-windows\debug\bin"
"x64\Debug\manifest.ceffc6eb.tlog\manifest-example.write.1u.tlog" "x64\Debug\vcpkg.applocal.log"
D:\projects\manifest-example\x64\Debug\fmtd.dll
FinalizeBuildStatus:
(omitted)
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 はオープンソース プロジェクトです。 フィードバックを提供するにはリンクを選択します。
トレーニング
モジュール
新しい .NET プロジェクトを作成し、パッケージの依存関係を処理する - Training
.NET プロジェクトを作成し、パッケージを追加して、プロジェクト内のパッケージ依存関係を管理する方法を学習します。 .NET Core CLI と NuGet レジストリを使用して、Visual Studio Code でライブラリとツールを C# アプリケーションに追加します。