ハイハイスクールアドベンチャー_qt版
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
ハイハイスクールアドベンチャー_qt版 [2025/09/26 23:25] – [リソースフォルダーのコピー] 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版 ==== | ||
行 635: | 行 636: | ||
とすれば、インストールしてくれます。 | とすれば、インストールしてくれます。 | ||
+ | == パッケージング == | ||
+ | |||
+ | 以前なら、Slackware系、RedHat系、Debian系がしのぎを削っていましたが、今どきはもうDebian系一択でいいでしょう。 | ||
+ | deb形式のパッケージにまとめることを想定しています。 | ||
+ | |||
+ | < | ||
+ | |||
+ | <code bash> | ||
+ | $ make install DESTDIR=$PWD/ | ||
+ | </ | ||
+ | |||
+ | これで、./ | ||
+ | |||
+ | 次に、パッケージ用のファイルを作ります。 | ||
+ | |||
+ | <code bash> | ||
+ | $ mkdir ./ | ||
+ | </ | ||
+ | |||
+ | ./ | ||
+ | これは Ubuntu24.04.02 用のファイルになります。 | ||
+ | |||
+ | <file ini control> | ||
+ | Package: qhhsadv | ||
+ | Version: 1.0.0 | ||
+ | Section: games | ||
+ | Priority: optional | ||
+ | Architecture: | ||
+ | Maintainer: Hiroyuki Araki < | ||
+ | Depends: libc6 (>= 2.31), libqt6core6t64 (>= 6.4), libqt6multimedia6 (>=6.4), libqt6widgets6t64 (>= 6.4) | ||
+ | Description: | ||
+ | A Qt-based High High School Adventure implementation. | ||
+ | </ | ||
+ | |||
+ | あとは、パッケージの作成を行います。 | ||
+ | |||
+ | <code bash> | ||
+ | $ 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でも好きなのでインストーラを走らせるだけです。 | ||
+ | カレントフォルダに 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> | ||
+ | $ sudo apt install -y ./ | ||
+ | </ | ||
=== Windows === | === Windows === | ||
+ | Windowsの場合は、Linuxのように、直接 make でインストールするのは現実的ではありません。 | ||
+ | なので、インストーラを作ってそれでインストールする形をとります。 | ||
+ | |||
+ | WiXかInno Setup 6のどっちかが定番らしいですが、WiXは基本的に Visal Studio 2022のプラグインとして使うのが普通なので、Qt Creator や cmakeでやるのはちょっとめんどくさそうです。 | ||
+ | |||
+ | なので、Inno Setup 6を使うことにします。 | ||
+ | Inno Setup 6は winget でインストールできます。 | ||
+ | |||
+ | <code powershell> | ||
+ | PS C:\> winget install JRSoftware.InnoSetup | ||
+ | </ | ||
+ | |||
+ | 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版.1758929153.txt.gz · 最終更新: by araki