プロジェクト

全般

プロフィール

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