「Qtの設定 - リリース」の版間の差分
(→概要) |
|||
1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
Qtで開発したソフトウェアにおいて、ソフトウェアをデプロイする手順を記載する。<br> | |||
<br><br> | <br><br> | ||
2021年2月12日 (金) 14:24時点における版
概要
Qtで開発したソフトウェアにおいて、ソフトウェアをデプロイする手順を記載する。
デプロイの手順
deployqtを使用する場合
まず、QtプロジェクトをReleaseモードに設定するには、Qt Creatorのメイン画面左にある[プロジェクト] - [ビルド設定]から"Release"を選択する。
この状態において、Qtプロジェクトをビルドまたはリビルドする。
- Windows
- Qt Frameworkをインストールしている場合、リリースするexeファイルに必要なライブラリを集めるwindeployqt.exeを実行する。
- windeployqt.exeは、以下のディレクトリに格納されている。
C:\Qt\QtX.X.X\msvc_<バージョン名>\bin\windeployqt.exe
- Qtをインストールした時に、上記のディレクトリのパスが通っているため、
- PowerShellまたはコマンドプロンプトにて、デプロイするexeファイルがあるディレクトリに移動して、以下のコマンドを実行する。
windeployqt <デプロイするexeファイル名>
- Linux
- Linuxには、Qt Frameworkにlinuxdeployqtが含まれていない。
- しかし、有志が作成したlinuxdeployqtが存在するため、これをユーザの環境でビルドして使用する必要がある。
- (qmakeのパスを、使用するQtのバージョンに合わせて使用すること)
- https://github.com/probonopd/linuxdeployqt
- ターミナルにて、デプロイする実行ファイルがあるディレクトリに移動して、以下のコマンドを実行する。
<linuxdeployqtのインストールディレクトリ>/Release/linuxdeployqt <デプロイする実行ファイル名>
deployqtを使用しない場合
QtプロジェクトをReleaseモードに設定するには、Qt Creatorのメイン画面左にある[プロジェクト] - [ビルド設定]から"Release"を選択する。
この状態において、Qtプロジェクトをビルドまたはリビルドする。
もし、デプロイしたソフトウェアを実行した時、以下のようなエラーが出力される場合がある。
xxx.soファイルがないためプログラムを開始できません。 または xxx.dllファイルがないためプログラムを開始できません。
この時、以下のコマンドを実行して、どのようなライブラリが欠如しているかを確認する。
必要なライブラリの一覧が出力されるので、エラーメッセージにしたがって、必要なライブラリを実行ファイルと同じディレクトリに配置する。
objdump -p <実行ファイル名> | grep -iE "(\.so|\.dll)"
PC環境や使用する機能によって、必要なライブラリが異なる。
例えば、SVG機能を使用する場合、Qt5Svg.dllを配置する。
Windowsの場合、必要なライブラリを確認するには、Dependency Walkerを使用することを推奨する。
http://www.dependencywalker.com/
Dependency Walkerは、メイン画面左に必要なライブラリの一覧、メイン画面右に各ライブラリで使用している関数の情報が表示される。
欠如しているライブラリは赤で表示されるため、その情報を元にライブラリを配置することができる。
また、ライブラリで定義されていないにも関わらず使用されている関数は赤で表示されるため、その情報からエラーの原因を探ることにも役立つ。
QtのLGPLライセンスについて
Qtには、商用利用できる有償版とLGPLライセンスの無償版の2種類が提供されている。
無償版のQtでは、無料で配布可能なソフトウェアを開発できるが、守るべき事項がいくつかある。
- Qt 4.5以降でLGPL版が使える。
- LGPL版を使っていることを明記する。
- LGPLライセンスの静的ライブラリを使用する場合、ソフトウェアのソースコードおよびオブジェクトファイルを公開する。
- LGPLライセンスの動的ライブラリを使用する場合、暗黙的リンクおよび明示的リンクいずれも公開しなくても構わない。
これは、Qtはライブラリ群であるため、開発するソフトウェアに対して、Qtライブラリのヘッダファイルをインクルードしなければはならないが、
例外規定があり、ヘッダファイルのインクルードはLGPLの適用は不要とされているため、
インクルードによりLGPLにしなくてはならないという事態は避けることができる。 - 既存のQtライブラリを変更する場合、ソースコードを公開しなければならない。
- 無償版のQtで開発したソフトウェアのリバースエンジニアリングを禁止してはならない。
- 同一プロジェクト内で、有償版Qtを使用する開発者がいる場合、他の開発者が無償版Qtを使用することはできない。
Qtを使用して作成したソースコードに共通部分がある場合、同一プロジェクトとみなされる。 - 無償版のQtで開発をした後、同一プロジェクトを有償版のQtに移すことはできない。
- Qt 5.7以降において、Qt WebEngineの一部とQt SerialPortを除いたLGPL v2.1が適用されているすべての既存モジュールが、LGPL v3に変更されている。
また、Qt 5.7以降のQt Charts、Qt Data Visualization、Qt Virtual Keyboard、Qt Purchasing、Qt Quick 2D Rendererの各モジュールはGPL v3で提供されている。
多くの場合において、LGPLライセンスの静的ライブラリを使用しない場合、ソフトウェアのソースコードは公開しなくてもよい可能性が高い。
上記に記載したことを守れば、無償版のQtで開発したソフトウェアでも商用利用することができる。