このドキュメントではPCL All-in-one Installerを生成する手順を解説します。
この手順には手作業が多く含まれており、ユーザーが正しく再現できるかどうかわかりません。
そのため、個別のサポートやご質問にはお応え致しかねますでご了承下さい。
Require
- Visual Studio 2019 (or latest)
- CMake 3.17 (or latest)
- NSIS 3.05 (or latest)
- Script for fix project.nsi
DOCS (Option) *1
- Doxygen 1.8.14
- MiKTeX 2.9.6850
- Ghostscript 9.10
- HTML Help Workshop 4.74.8702
- Graphviz 2.38
TUTORIALS (Option) *1 *2
- Python 2.7.17
- Sphinx==1.8.5
- sphinxcontrib-doxylink==1.3
- sphinx_rtd_theme==0.4.3
- pyparsing==2.1.9
*1 Docs/Tutorialsではこれらの依存関係のバージョンを変更すると動作しない可能性があります。これは動作実績です。
*2 Tutorialsを生成するにはPython2が必要です。現在、Python3では"Advanced"プロジェクトがビルドできません。将来的に私たちはPython3に移行する必要があります。
-
依存関係をインストール、環境変数にパスを通します。
- Dependecies for Installer (NSIS3)
https://nsis.sourceforge.io/Download - Dependencies for PCL
https://gist.github.com/UnaNancyOwen/59319050d53c137ca8f3#file-pcl1-11-0-md - Dependencies for Docs/Tutorials *3
https://gist.github.com/UnaNancyOwen/c186514340ad2b0fa3b6dd505f9d27c3
- Dependecies for Installer (NSIS3)
-
CMakeでPCLのプロジェクトを構成、生成します。
基本的な構成は以下のドキュメントを参照してください。
https://gist.github.com/UnaNancyOwen/59319050d53c137ca8f3#cmake https://gist.github.com/UnaNancyOwen/c186514340ad2b0fa3b6dd505f9d27c3#file-docs-md- BUILD
- BUILD_all_in_one_installer ☑(check)
- WITH
- WITH_DOCS ☑(check) *3
- WITH_TUTORIAL ☑(check) *3
*3 これらはDocs/Tutorialsを生成する場合のみ必要です。(Option)
- BUILD
-
Visual StudioでPCLをビルド、インストールします。
- ALL_BUILDプロジェクトをDebug/Release構成でビルドする。
- INSTALLプロジェクトをDebug/Release構成でビルドする。
-
Visual Studioでパッケージを生成する準備をします。
-
PACKAGEプロジェクトをDebug構成でビルドする。
このプロジェクトは、パッケージに必要なファイルを収集、インストーラーを生成します。
しかし、現在のビルド構成のファイルのみ収集されるため、ここではインストーラーの生成までは行いません。パッケージに必要なファイルを収集が終わったらビルドを停止します。(3rdPartyはビルド構成によらずすべてのファイルが収集されるので、Release構成でビルドしたときに収集されるものを利用します。)1>------ ビルド開始: プロジェクト: PACKAGE, 構成: Debug x64 ------ 1>CPack: Create package using NSIS 1>CPack: Install projects 1>CPack: - Install project: PCL [Debug] 1>CPack: - Install component: pcl_common 1>CPack: - Install component: pcl_kdtree 1>CPack: - Install component: pcl_octree 1>CPack: - Install component: pcl_search 1>CPack: - Install component: pcl_sample_consensus 1>CPack: - Install component: pcl_filters 1>CPack: - Install component: pcl_2d 1>CPack: - Install component: pcl_geometry 1>CPack: - Install component: pcl_io 1>CPack: - Install component: pcl_features 1>CPack: - Install component: pcl_ml 1>CPack: - Install component: pcl_segmentation 1>CPack: - Install component: pcl_visualization 1>CPack: - Install component: pcl_surface 1>CPack: - Install component: pcl_registration 1>CPack: - Install component: pcl_keypoints 1>CPack: - Install component: pcl_tracking 1>CPack: - Install component: pcl_recognition 1>CPack: - Install component: pcl_stereo 1>CPack: - Install component: pcl_outofcore 1>CPack: - Install component: pcl_people 1>CPack: - Install component: pcl_tools 1>CPack: - Install component: doc 1>CPack: - Install component: pclconfig 1>CPack: - Install component: Eigen 1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): warning MSB5021: ビルドが取り消されたため、実行可能なタスク "cmd" とその子プロセスを終了しています。 1>プロジェクト "PACKAGE.vcxproj" のビルドが終了しました -- 失敗。 1>タスクが取り消されました。 1>タスクが取り消されました。 ビルドが取り消されました。
-
フォルダ名を変更する。
Debug構成のパッケージに必要なファイルが_CPack_Packages
フォルダに収集されています。
ここで、フォルダ名を_CPack_Packages_Debug
などに変更します。 -
PACKAGEプロジェクトをRelease構成でビルドする。
同様に現在のビルド構成のファイルのみ収集されるため、ここではインストーラーの生成までは行いません。パッケージに必要なファイルを収集が終わり、project.nsi
が生成されたらビルドを停止します。1>------ ビルド開始: プロジェクト: PACKAGE, 構成: Release x64 ------ 1>CPack: Create package using NSIS 1>CPack: Install projects 1>CPack: - Install project: PCL [Release] 1>CPack: - Install component: pcl_common 1>CPack: - Install component: pcl_kdtree 1>CPack: - Install component: pcl_octree 1>CPack: - Install component: pcl_search 1>CPack: - Install component: pcl_sample_consensus 1>CPack: - Install component: pcl_filters 1>CPack: - Install component: pcl_2d 1>CPack: - Install component: pcl_geometry 1>CPack: - Install component: pcl_io 1>CPack: - Install component: pcl_features 1>CPack: - Install component: pcl_ml 1>CPack: - Install component: pcl_segmentation 1>CPack: - Install component: pcl_visualization 1>CPack: - Install component: pcl_surface 1>CPack: - Install component: pcl_registration 1>CPack: - Install component: pcl_keypoints 1>CPack: - Install component: pcl_tracking 1>CPack: - Install component: pcl_recognition 1>CPack: - Install component: pcl_stereo 1>CPack: - Install component: pcl_outofcore 1>CPack: - Install component: pcl_people 1>CPack: - Install component: pcl_tools 1>CPack: - Install component: doc 1>CPack: - Install component: pclconfig 1>CPack: - Install component: Eigen 1>CPack: - Install component: Boost 1>CPack: - Install component: Qhull 1>CPack: - Install component: FLANN 1>CPack: - Install component: VTK 1>CPack: - Install component: OpenNI2 1>CPack: Create package 1>EXEC : CPack error : Problem running NSIS command: "C:/Program Files (x86)/NSIS/makensis.exe" "C:/pcl-1.11.0/build/_CPack_Packages/win64/NSIS/project.nsi" 1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): warning MSB5021: ビルドが取り消されたため、実行可能なタスク "cmd" とその子プロセスを終了しています。 1>プロジェクト "PACKAGE.vcxproj" のビルドが終了しました -- 失敗。 1>タスクが取り消されました。 1>タスクが取り消されました。 ビルドが取り消されました。
-
-
パッケージを生成します。
-
ファイルをコピーする。
Debug構成のパッケージに必要なファイルが_CPack_Packages_Debug
フォルダに収集されています。Release構成のパッケージに必要なファイルが_CPack_Packages
フォルダに収集されています。
_CPack_Packages_Debug
フォルダに含まれる以下のDebug構成のファイルを_CPack_Packages
フォルダにコピーします。pcl_*d.dll pcl_*d.lib pcl_*d.exe
ファイルは同じフォルダ構成でコピーしてください。
(e.g._CPack_Packages_Debug/win64/NSIS/PCL-1.11.0-AllInOne-msvc2019-win64/pcl_common/bin/pcl_commond.dll
->_CPack_Packages/win64/NSIS/PCL-1.11.0-AllInOne-msvc2019-win64/pcl_common/bin/pcl_commond.dll
) -
NSISプロジェクトファイルを修正する。
NSISプロジェクトファイル(_CPack_Packages/win64/NSIS/project.nsi
)はRelease構成のファイルのみでアンインストーラーを生成します。 これではアンインストールしたときにDebug構成のファイルが残ってしまいます。
そこで、NSISプロジェクトファイルをスクリプトで修正します。このスクリプトでは、pcl_*.dll
、pcl_*.lib
、pcl_*.exe
を削除する行を見つけると次の行にDebugファイルの接尾辞(d
)を付けて追加します。これでDebug構成のファイルもアンインストーラーで削除されるようになります。Delete "$INSTDIR\bin\pcl_common.dll" + Delete "$INSTDIR\bin\pcl_commond.dll"
Scriptに
project.nsi
をドラッグ&ドロップすると修正された_project.nsi
が生成されます。
-
NSISプロジェクトファイルをビルド、PCL All-in-one Instllerを生成する。
修正したNSISプロジェクトファイル(_CPack_Packages/win64/NSIS/_project.nsi
)のコンテキストメニューから「Compile NSIS Script」を選択するとパッケージのコンパイルが実行されます。
コンパイルが終了するとPCL All-in-one Installerが生成されます。
-