ハイハイスクールアドベンチャー_qt版
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| ハイハイスクールアドベンチャー_qt版 [2025/09/26 23:38] – [インストーラとパッケージ] araki | ハイハイスクールアドベンチャー_qt版 [2025/10/01 05:02] (現在) – [環境非依存化] araki | ||
|---|---|---|---|
| 行 507: | 行 507: | ||
| とりあえず、WindowsとLinux ((Ubuntu 24.04LTS, Ubuntu 25.04、Debian 12(ARM64)で確認))でのビルドが可能なことは確認しました。 | とりあえず、WindowsとLinux ((Ubuntu 24.04LTS, Ubuntu 25.04、Debian 12(ARM64)で確認))でのビルドが可能なことは確認しました。 | ||
| + | ((なお、Apple系のデバイスは持ってないし買う気もないのでできるかどうかはどなたか試してください。)) | ||
| ==== Windows版 ==== | ==== Windows版 ==== | ||
| 行 640: | 行 641: | ||
| deb形式のパッケージにまとめることを想定しています。 | deb形式のパッケージにまとめることを想定しています。 | ||
| - | パッケージングするためには、仮想ルートフォルダの下にイメージをインストールします。 | + | <del>パッケージングするためには、仮想ルートフォルダの下にイメージをインストールします。 |
| <code bash> | <code bash> | ||
| 行 673: | 行 674: | ||
| <code bash> | <code bash> | ||
| $ dpkg-deb --root-owner-group --build package-root qhhsadv_1.0.0_ubutu24.04.2_amd64.deb | $ dpkg-deb --root-owner-group --build package-root qhhsadv_1.0.0_ubutu24.04.2_amd64.deb | ||
| + | </ | ||
| + | |||
| + | パッケージングでcontrolファイルを毎回作るの面倒くさいとAIにもちかけたら、CPackにすればいいじゃん、といわれました。 | ||
| + | なにそれ? | ||
| + | |||
| + | <code cmake> | ||
| + | if(UNIX AND NOT APPLE) | ||
| + | # パッケージの基本情報 | ||
| + | set(CPACK_PACKAGE_NAME ${APP_NAME}) | ||
| + | set(CPACK_PACKAGE_VERSION ${APP_VERSION}) | ||
| + | set(CPACK_PACKAGE_CONTACT " | ||
| + | |||
| + | # Debian パッケージ用のメタ情報 | ||
| + | set(CPACK_GENERATOR " | ||
| + | set(CPACK_DEBIAN_PACKAGE_MAINTAINER " | ||
| + | set(CPACK_DEBIAN_PACKAGE_SECTION " | ||
| + | set(CPACK_DEBIAN_PACKAGE_DEPENDS " | ||
| + | |||
| + | # アーキテクチャ指定(自動判定も可能) | ||
| + | string(TOLOWER " | ||
| + | |||
| + | if(DETECTED_ARCH STREQUAL " | ||
| + | set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE " | ||
| + | elseif(DETECTED_ARCH STREQUAL " | ||
| + | set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE " | ||
| + | elseif(DETECTED_ARCH MATCHES " | ||
| + | set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE " | ||
| + | else() | ||
| + | set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE " | ||
| + | endif() | ||
| + | |||
| + | include(CPack) | ||
| + | endif() | ||
| + | </ | ||
| + | |||
| + | インストールターゲットとか特には必要としません。 | ||
| + | パッケージの作成までは以下の手順になります。 | ||
| + | |||
| + | <code bash> | ||
| + | $ git clone https:// | ||
| + | $ cd qhhsadv | ||
| + | $ cmake -B build -DCMAKE_BUILD_TYPE=Release | ||
| + | $ cmake --build build --target all | ||
| + | $ cpack -G DEB -C Release --config build/ | ||
| </ | </ | ||
| インストールは dpkgでも aptでも好きなのでインストーラを走らせるだけです。 | インストールは dpkgでも aptでも好きなのでインストーラを走らせるだけです。 | ||
| + | カレントフォルダに qhhsadv_1.1.1_Linux.deb のようなファイルができます。 | ||
| + | バージョン番号は、CMakeLists.txtの頭の方に書いてあります。 | ||
| + | |||
| + | <code cmake> | ||
| + | # Application basic information | ||
| + | set(APP_NAME " | ||
| + | set(APP_VERSION_MAJOR " | ||
| + | set(APP_VERSION_MINOR " | ||
| + | set(APP_VERSION_PATCH " | ||
| + | set(APP_VERSION " | ||
| + | </ | ||
| <code bash> | <code bash> | ||
| 行 695: | 行 751: | ||
| </ | </ | ||
| + | DEBIANのcontrol同様、Inno Setup には Setup.issという設定ファイルを作る必要があります。 | ||
| + | |||
| + | <file ini setup.iss.in> | ||
| + | ; ハイハイスクールアドベンチャー インストーラ (Inno Setup) | ||
| + | |||
| + | [Setup] | ||
| + | AppName=High High School Adventure Qt | ||
| + | AppVersion=@APP_VERSION@ | ||
| + | AppPublisher=WildTreeJP | ||
| + | DefaultDirName={commonpf}\QHHSAdv | ||
| + | DefaultGroupName=ハイハイスクールアドベンチャー | ||
| + | UninstallDisplayIcon={app}\qhhsadv.exe | ||
| + | OutputBaseFilename=qhhsadv_setup | ||
| + | Compression=lzma | ||
| + | SolidCompression=yes | ||
| + | |||
| + | [Languages] | ||
| + | Name: " | ||
| + | Name: " | ||
| + | |||
| + | [Tasks] | ||
| + | Name: " | ||
| + | |||
| + | [Files] | ||
| + | ; Qtアプリ本体と依存DLLをまとめたフォルダを指定 | ||
| + | Source: " | ||
| + | Source: " | ||
| + | |||
| + | ; リソースディレクトリ | ||
| + | Source: " | ||
| + | |||
| + | [Icons] | ||
| + | Name: " | ||
| + | Name: " | ||
| + | |||
| + | [Run] | ||
| + | ; インストール完了後に起動するオプション | ||
| + | Filename: " | ||
| + | </ | ||
| + | |||
| + | デプロイするのに必要なファイルやフォルダを、インストーラの作業ディレクトリの下の deploy にまとめることにします。 | ||
| + | この方針に合うように CMakeLists.txt に WIN32用の記述を追加していきます。 | ||
| + | |||
| + | <code cmake> | ||
| + | if(WIN32) | ||
| + | # デプロイ先ディレクトリ | ||
| + | set(DEPLOY_DIR ${CMAKE_BINARY_DIR}/ | ||
| + | |||
| + | # コピー対象 | ||
| + | set(APP_EXE $< | ||
| + | set(DATA_DIR ${CMAKE_BINARY_DIR}/ | ||
| + | |||
| + | # デプロイ処理 | ||
| + | add_custom_command( | ||
| + | TARGET qhhsadv POST_BUILD | ||
| + | COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPLOY_DIR} | ||
| + | COMMAND ${CMAKE_COMMAND} -E copy $< | ||
| + | COMMAND ${CMAKE_COMMAND} -E copy_directory ${DATA_DIR} ${DEPLOY_DIR}/ | ||
| + | COMMENT " | ||
| + | ) | ||
| + | |||
| + | # Qt DLL やプラグインを集める場合(windeployqt) | ||
| + | # Qt bin ディレクトリを探す | ||
| + | get_target_property(QT_QMAKE_EXECUTABLE Qt6::qmake IMPORTED_LOCATION) | ||
| + | get_filename_component(QT_BIN_DIR " | ||
| + | |||
| + | set(WINDEPLOYQT_EXECUTABLE " | ||
| + | |||
| + | add_custom_command( | ||
| + | TARGET qhhsadv POST_BUILD | ||
| + | COMMAND " | ||
| + | COMMENT " | ||
| + | ) | ||
| + | |||
| + | add_custom_command( | ||
| + | TARGET qhhsadv POST_BUILD | ||
| + | COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/ | ||
| + | COMMENT " | ||
| + | ) | ||
| + | configure_file(${CMAKE_SOURCE_DIR}/ | ||
| + | |||
| + | # Inno Setup コンパイラを探す | ||
| + | |||
| + | find_program(INNO_SETUP_COMPILER | ||
| + | NAMES ISCC iscc | ||
| + | HINTS | ||
| + | " | ||
| + | ) | ||
| + | # PATH に入っている場合も探す | ||
| + | if(NOT INNO_SETUP_COMPILER) | ||
| + | find_program(INNO_SETUP_COMPILER NAMES ISCC iscc) | ||
| + | endif() | ||
| + | |||
| + | if(INNO_SETUP_COMPILER) | ||
| + | message(STATUS "Inno Setup found: ${INNO_SETUP_COMPILER}" | ||
| + | |||
| + | # .iss スクリプトの場所 | ||
| + | set(INNO_SCRIPT ${CMAKE_BINARY_DIR}/ | ||
| + | |||
| + | # 出力先(例: | ||
| + | set(INSTALLER_OUTPUT ${CMAKE_BINARY_DIR}/ | ||
| + | |||
| + | add_custom_command( | ||
| + | OUTPUT ${INSTALLER_OUTPUT} | ||
| + | COMMAND " | ||
| + | DEPENDS qhhsadv | ||
| + | WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | ||
| + | COMMENT " | ||
| + | ) | ||
| + | |||
| + | add_custom_target(installer ALL | ||
| + | DEPENDS ${INSTALLER_OUTPUT} | ||
| + | ) | ||
| + | else() | ||
| + | message(WARNING "Inno Setup (ISCC.exe) not found. Skipping installer target." | ||
| + | endif() | ||
| + | endif() | ||
| + | </ | ||
| + | |||
| + | Windows版Qtには、必要なDLLなどをまとめてくれる windeployqt.exe というツールが入っていて、これがDLLをかき集めてくれます。 | ||
| + | ランタイムパッケージなどの提供がないQtなので、これはWindows版をデプロイするのには必須です。 | ||
| + | |||
| + | 生成されたプログラム、リソースなどをコピーして、DLLなどをかき集めたら、ISCC.exe を呼び出して、インストーラに仕上げます。 | ||
| + | |||
| + | ここまでを、Windows環境でビルドを走らせると一気にやってくれます。 | ||
ハイハイスクールアドベンチャー_qt版.1758929910.txt.gz · 最終更新: by araki
