What is Package Management System?
パッケージ管理システムはソフトウェアやライブラリのインストールや依存関係の解決などの管理を行うためのシステムです。
LinuxのAPTやYum、MacのMacPortsやHomebrewなど広く利用されています。
また、WindowsではC#などのManaged Language向けにNuGetが利用されています。
What is Vcpkg?
VcpkgはVisual C++向けのライブラリを管理するパッケージ管理システムです。
CMakeベースのパッケージ管理システムになっており、GitHubでオープンソースで開発されています。
このVcpkgを利用することで、様々なライブラリを簡単に導入することができます。インストールやプロジェクトの設定などライブラリごとに異なるこれらの作業をすべてVcpkgのコマンドで行うことができます。
VcpkgはVisual C++ 2017とVisual C++ 2015に対応しています。
BoostやOpenCVをはじめ、すでに300以上のライブラリをサポートしています。
サポートしているライブラリはportsディレクトリやvcpkg search
コマンドで参照してください。
Vcpkg Support PCL
Point Cloud Library (PCL)は3次元点群処理向けのオープンソースのライブラリです。
点群処理に関する様々な機能を持つライブラリですが、依存関係が多く導入が難しいとされています。
そこで、誰でもPCLを簡単に導入できるようにVcpkgでサポートしました。
以下のコマンドを実行することで依存ライブラリを含め簡単にインストールすることができます。
# x86 dynamic link library vcpkg install pcl:x86-windows # x64 dynamic link library vcpkg install pcl:x64-windows # x86 static link library vcpkg install pcl:x86-windows-static # x64 static link library vcpkg install pcl:x64-windows-static
- Update 2017/11/02
依存ライブラリを指定することができるFeature Packagesに対応しました。
Feature Packagesはvcpkg install <package>[features]
のように依存ライブラリを指定することができます。
PCLではOpenNI2、Qt、PCAPを有効にすることができます。
# Build PCL with OpenNI2, Qt and PCAP vcpkg install pcl[openni2,qt,pcap]:x64-windows --featurepackages
How to install Vcpkg
Vcpkgは非常に簡単にインストールできます。
- Vcpkgをダウンロード、任意の場所に展開する(e.g.
C:\vcpkg
) - Vcpkgをビルドする
- Vcpkgが正常にインストールされているかどうか確認する
以下のリンクからダウンロードすることができます。
vcpkg\bootstrap-vcpkg.bat
を起動すると自動的にビルドされます。
ビルドが正常に完了するとvcpkg\vcpkg.exe
が生成されます。
環境変数Pathを設定しておくと便利でしょう。
Variable | Value |
Path | ;C:\vcpkg |
PowerShellを開いて以下のコマンドが実行してみましょう。
vcpkg
以下のようなVcpkgのヘルプが表示されれば正常にインストールされています。
Basic Commands
Vcpkgでよく使う基本的なコマンドは以下の通りです。
この6種のコマンドだけ使えればVcpkgをマスターしたも同然です。
- vcpkg install <pkg>:[triplet] / vcpkg remove <pkg>:[triplet]
パッケージをインストールまたはアンインストールします。
そのさい、パッケージの依存ライブラリも一緒にインストールされます。
明示的にターゲット(triplet)を指定しない場合、x86のdynamic link libraryをインストールします。他のターゲットを利用する場合、パッケージ名の後ろに指定します。
パッケージはvcpkg/installed/<triplet>
にインストールされます。
# x86 dynamic link library (default) vcpkg install boost:x86-windows # x86 static link library vcpkg install boost:x86-windows-static # x64 dynamic link library vcpkg install boost:x64-windows # x64 static link library vcpkg install boost:x64-windows-static
# x86 dynamic link library (default) vcpkg remove boost:x86-windows # x86 static link library vcpkg remove boost:x86-windows-static # x64 dynamic link library vcpkg remove boost:x64-windows # x64 static link library vcpkg remove boost:x64-windows-static
現在サポートしているパッケージ一覧を表示します。
# List Supported Packages vcpkg search
現在インストールされているパッケージ一覧を表示します。
# List Installed Packages vcpkg list
すべてのVisual C++のプロジェクトでインストールされたパッケージを利用できるようにします。それぞれのプロジェクトで設定を行う必要はなく、そのままライブラリを利用してプログラムを開発することができます。
設定するときはvcpkg integrate install
、解除するときはvcpkg integrate remove
を一度だけ実行します。
# Integrate vcpkg integrate install # UnIntegrate vcpkg integrate remove
How to Generate Own Projects that use Installed Packages?
Vcpkgでインストールしたライブラリを自分のプロジェクトで使用するには以下の方法があります。
- Vcpkgのコマンドを利用する方法
一度だけ以下のコマンドを実行することで、新規に作成したプロジェクトや既存のプロジェクトを含むすべてのプロジェクトで特別な設定をすることなくライブラリを利用することができます。
# Integrate Vcpkg Settings to All Visual C++ Projects vcpkg integrate install
CMakeListsをもとに設定済みのプロジェクトを生成します。
これまで利用していたCMakeListsに以下の行を加えるだけでfind_package()
はVcpkgのライブラリを探索します。
# Setting to use Vcpkg set( CMAKE_TOOLCHAIN_FILE "C:/vcpkg/scripts/buildsystems/vcpkg.cmake" )
Reference
Vcpkgのドキュメントは以下にあります。
バグの報告や質問、リクエストなどありましたらissuesに登録してみましょう。
vcpkg install pcl:x64-windows
コマンドを実行したのですが
libpng のパッケージをインストールする所で失敗してしまいます。
(sourceforce にあるlibpngのパッケージが
older-releases に移動したせいでurl が変更になった?)
sirokujiraさん、
あらかじめ
chcp 65001
で文字コードをUTF-8に変更しておく必要がありましたが、それ以外は問題はありませんでした。ダウンロード先のサーバーがダウンしていたりすると失敗することがあります。その場合は少し時間を置いてから再度お試しください。
それでも解決しない場合は、Vcpkgのissuesに問題を投稿してください。
再度、最新のソースコードを落として来て確認した所
pcl のパッケージをインストールしたことを確認できました。
(MSMPIのインストーラーが入っていなかったので
途中でエラーになりましたが downloadsフォルダにある
MSMpiSetup インストーラーを実行後にパッケージの
インストールを再開すれば問題なかったです。[Issue 1605]
)
Hi thank you for your tutorial on how to install pcl from vcpkg. It is helpful. I am curious what’s next steps after I successfully install the pcl. Should I just open it in VS 2017 and build project from there? I am totally newbie to pcl and really want to test on using it. Appreciate if you are willing to show me hows or any reference sites. Thank you very much!
Hi damagor,
I recommend learning PCL with tutorial.
First of all, I recommend learning to create your own project.