CMakeでのWindows用パッケージ作成手順¶
Linux環境でDEB/RPMパッケージが作成できるように調整したcmakeファイルに対して以下の変更を加えると、インストーラが作成できる。
ImageCalibrationコンポーネントを例として使用している。 作成されるパッケージファイルは、「ImageCalibration110.exe」である。
1) ソースのビルド¶
以下の修正を行えばビルドは通る。
- ImageCalibration/CMakeLists.txt の修正
- ドキュメントがらみの設定を細かく見ていないので、OFFとする
- ONのままにしておくとパッケージ作成の段階でエラーとなる
option(BUILD_DOCUMENTATION "Build the documentation" OFF)
- インストール先を指定する
if(WIN32) # set(BIN_INSTALL_DIR "components/bin") # set(LIB_INSTALL_DIR "components/lib") set(INSTALL_PREFIX "components/${PROJECT_TYPE}") ←★ここ else(WIN32) set(OPENRTM_SHARE_PREFIX "share/openrtm-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}") set(INSTALL_PREFIX "${OPENRTM_SHARE_PREFIX}/components/${PROJECT_TYPE}") endif(WIN32)
2) Wix用CMakeパッチ¶
以下のページに従い「cmake-2.8-WiX-patch」をC:\Program Files\CMake 2.8 の該当ディレクトリに上書きしてしまった。
しかしパッケージを作成してみたらNSISを利用していることが分かった。このパッチを当てる処理は不要だと思われる。
http://openrtm.org/openrtm/ja/content/%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB%E6%96%B9%E6%B3%95-windows%E3%80%81cmake-%E5%88%A9%E7%94%A8#toc12
3) パッケージ作成¶
VisualStudioのソリューションエクスプローラで PACKAGE を選び、右クリックでビルドする。この時、NSISをインストールしていないとエラーとなる。
CPack error : Cannot find NSIS registry value. This is usually caused by NSIS not being installed. Please install NSIS from http://nsis.sourceforge.net
- 指定のリンク先からNSISをダウンロード
- 2.46版と3.0a2版があったので、2.46版の方をインストール nsis-2.46-setup.exe
ImageCalibration/cmake/cpack_options.cmake.inで指定しているicoファイルが開けないというエラーが発生。(実在しないファイル)
Error while loading icon from "C:/distribution/ImageProcessing/opencv/components/ImageCalibration/cmake\rt_middleware_logo.ico": can't open file
以下の3箇所をコメントアウトする
# set(CPACK_NSIS_MUI_ICON "@PROJECT_SOURCE_DIR@/cmake\\rt_middleware_logo.ico") # set(CPACK_NSIS_MUI_UNIICON "@PROJECT_SOURCE_DIR@/cmake\\rt_middleware_logo.ico") # set(CPACK_PACKAGE_ICON "@PROJECT_SOURCE_DIR@/cmake\\rt_middleware_logo.bmp")
ImageCalibration\build\_CPack_Packages\win32\NSIS\ImageCalibration110.exe が生成される
ImageCalibration110.exe └─component └─components └─c++ └─opencv-rtcs ImageCalibration.dll ImageCalibration.lib ImageCalibrationComp.exe
ImageCalibration110.exeを実行すると以下にインストールされ、Uninstall.exeでアンインストールできた。
C:\Program Files (x86)\ImageCalibration110 │ Uninstall.exe │ └─components └─c++ └─opencv-rtcs ImageCalibration.dll ImageCalibration.lib ImageCalibrationComp.exe