かつてはVisual Studioのインクルードやリンク,システム変数のPathなどに複数の関連ライブラリを通す必要があり難解なのに,日本語文献が十分になくて環境構築が一苦労だったPCLですが,今やPythonのPIPに近いvcpkgが使えるようになり随分導入が楽になりました.
そして定期的にアップデートして,色々便利なクラスや関数が追加されている様子なので…,余力があればそれもまた紹介したいです.
PCLインストールまでの準備
Visual Studio Communityのインストール
https://visualstudio.microsoft.com/ja/downloadsにアクセスし,「Community」をダウンロードする.

「VisualStudioSetup.exe」がダウンロードされるので,ダブルクリックして実行する.
「ワークロード」タブを選択し,「C++によるデスクトップ開発」にチェックを入れる.

gitのインストール
https://git-scm.com/downloads/winから「Standalone Installer」の「Git for Windows/x64 Setup」をダウンロードする.
「Git-(version名)-64-bit.exe」がダウンロードされるので,インストールする.設定はデフォルトのままで可.

Cmakeのインストール
https://cmake.org/downloadから最新版のCmakeをインストールする.設定はデフォルトのままで可.
vcpkgによるPCLのインストール
vcpkgをダウンロードするフォルダを作成する.ここでは「D:\lib」とする.
Windows PowerShellを起動し,以下のコマンドを順に実行する.
- cd D:\lib
- git clone https://github.com/microsoft/vcpkg
- .\vcpkg\bootstrap-vcpkg.bat

そのまま以下のコマンドを実行.30分~1時間かかるので待つ.
もしPowerShellを閉じてしまった場合は,cd D:\libを実行してから以下のコマンドを実行.
.\vcpkg\vcpkg.exe install pcl:x64-windows
プロジェクト作成と作成後の微調整
Cmakeでプロジェクト作成するための準備
Visual Studio Communityのプロジェクト関連のファイルを保存するためのフォルダを作成する.ここでは「D:\lib\read_pcd」とする.
GitHubにある点群データpcdファイルの中身をテキストで出力する「pcd_read.cpp」を実装してみる.サンプルコードは豊富にあるので他の物を試すのもいい.
https://github.com/PointCloudLibrary/pcl/blob/master/doc/tutorials/content/sources/pcd_read/pcd_read.cppから「pcd_read.cpp」と「CMakeLists.txt」をダウンロードし,「D:\lib\read_pcd」内に移動させる.
pcd_read.cppでは「test_pcd.pcd」ファイルを読み込むコードを書いているため,ここでは点群データ界ではちょっと有名なウサギ点群「bun0.pcd」をダウンロードしてリネームしたものを「D:\lib\read_pcd」内に保存した.
さらに,空のフォルダ「build」も新規作成する.
以上より,D:\lib\read_pcdの中身は以下のようになる.

Cmakeを使ったプロジェクト作成
CMakeLists.txtの中身は以下のとおり.これ以降,他のプロジェクトを作成する際,指定箇所さえその都度書き換えてしまえばCMakeLists.txtは使い回しても問題ない.具体的にはプロジェクト名(3行目と11行目,12行目 いずれも統一)と11行目のcppファイル名.

先ほどインストールしたCmakeにはGUIソフトも同封されているが,これを使ってコンパイルするとPCLのPathを探しに行ってしまいエラーが出るため,以下のようにPowerShellとコマンドを使ったコンパイルをする.
- cd D:\lib\read_pcd
- & ‘C:\Program Files\CMake\bin\cmake.exe’ -BD:\lib\pcd_read\build -DCMAKE_TOOLCHAIN_FILE=D:\lib\vcpkg\scripts\buildsystems\vcpkg.cmake
2つ目のコマンドは「CMakeの保存場所」,「buildフォルダの保存場所」,「vcpkgの保存場所」に応じて適宜修正.分かりやすく色分けしておきました.
「Generate done」とメッセージがでれば成功.buildフォルダの中身が以下のようになる.「pcd_read.sln」がVisual Studio Communityのプロジェクトファイル.
CMakeFilesフォルダとCmakeCache.txtしかない場合は上手くいっていない.大体はcdコマンド忘れか上記のパスが正しくないことが原因なので再度確認.

Visual Studio Community側での調整
「pcd_read.sln」をダブルクリックして,Visual Studio Communityを起動させる.ビルドする前にいくつか必要な処理がある.
ソリューションエクスプローラ上の pcd_read を右クリックして,「スタートアッププロジェクトに設定」を実行する.
もう一度pcd_read を右クリックして、 「プロパティ」を実行する.左側ウィンドウで「デバッグ」を選択して,右側ウィンドウで「作業ディレクトリ」に「D:\lib\pcd_read」を設定する.
※「..」は1つ上のディレクトリを意味する.pcd_read.slnから見てD:\lib\pcd_readは1つ上のディレクトリなので自動的にこのような表記になる.

pcd_read.cppはここにあるので,ダブルクリックしてエディタ上に表示させて適宜修正可能.

ビルド > ソリューションのビルドでビルドできる.特にエラーは出ないはず.
ローカルWindowsデバッガーでデバッグも可能.以下のように,点群データの点数と座標値が羅列される.
