2020/03/10(火) [n年前の日記]
#1 [prog] QtSDKをインストールしてみたり
PySide2 について勉強しているうちに、Qt Creator等に興味が湧いてきたので、Qt (QtSDK) をインストールしてみようかと。環境は Windows10 x64 1909。
既に Qt 5.5 がインストールされていたので、コントロールパネル経由でアンインストール。
現行のオープンソース版を入手。
_Download Offline Installers
「Qt 5.14.1 for Windows (2.3 GB)」をダウンロード。ファイル名は、qt-opensource-windows-x86-5.14.1.exe だった。
インストーラを実行して、今回は D:\Qt\ 以下にインストール。
この版は、Qtの公式サイトでユーザアカウントを取得して、インストーラ画面上でログインしないとインストールできないっぽい。以前の版はアカウント登録しなくても該当画面をSkipできたらしいのだけど…。仕方ないので一応アカウントを取得したけれど、個人情報流出云々で時々騒動が起きてしまうこの御時世に何故あえて、という気もする…。不要な個人情報はそもそも集めないのが最強のセキュリティ対策なのでは…。
それはさておき。今回は、MinGW 7.3.0 関係にチェックを入れてインストールした。
既に Qt 5.5 がインストールされていたので、コントロールパネル経由でアンインストール。
現行のオープンソース版を入手。
_Download Offline Installers
「Qt 5.14.1 for Windows (2.3 GB)」をダウンロード。ファイル名は、qt-opensource-windows-x86-5.14.1.exe だった。
インストーラを実行して、今回は D:\Qt\ 以下にインストール。
この版は、Qtの公式サイトでユーザアカウントを取得して、インストーラ画面上でログインしないとインストールできないっぽい。以前の版はアカウント登録しなくても該当画面をSkipできたらしいのだけど…。仕方ないので一応アカウントを取得したけれど、個人情報流出云々で時々騒動が起きてしまうこの御時世に何故あえて、という気もする…。不要な個人情報はそもそも集めないのが最強のセキュリティ対策なのでは…。
それはさておき。今回は、MinGW 7.3.0 関係にチェックを入れてインストールした。
◎ 問題発生。 :
ひとまずインストールして、Qt Creator 4.11.0 (Community) を起動したが、lldb.exe が「python36.dll が見つからない」とエラーを出す。
Qtインストールフォルダを検索してみたが、lldb.exe なんて存在しない…。
which lldb と打ってみて、lldb.exe の居場所が分かった。LLVM 9.0.0 のインストールフォルダ内に居た。
以前、Aseprite をビルドできるか試した際に LVM 9.0.0 をインストールして、それが邪魔をしてきた模様。とりあえず、Python 3.6.8 Windows版 64bit をインストールして、その中の python36.dll を LLVMインストールフォルダ\bin\ 以下にコピーしてみたらエラーが出なくなった。
Qtインストールフォルダを検索してみたが、lldb.exe なんて存在しない…。
which lldb と打ってみて、lldb.exe の居場所が分かった。LLVM 9.0.0 のインストールフォルダ内に居た。
以前、Aseprite をビルドできるか試した際に LVM 9.0.0 をインストールして、それが邪魔をしてきた模様。とりあえず、Python 3.6.8 Windows版 64bit をインストールして、その中の python36.dll を LLVMインストールフォルダ\bin\ 以下にコピーしてみたらエラーが出なくなった。
◎ ビルドしたexeを実行。 :
Hwlloworld をやってみて、.exe が生成された。しかし、ビルドした .exe を直接実行しようとしても、「DLLがねえよ」的なエラーメッセージが出てしまう。
Qt を使った .exe を実行するには、MinGWとQt関係のDLLが必要になるらしい。
_Qt Creatorでビルドした.exeファイルを実行/配布する - Qiita
今回の場合、以下の2つのディレクトリにパスを通すことで実行可能になる模様。
PATHの通った場所に、qtpath.bat を作成して、環境変数 PATH に上記の場所を追加するようにしてみる。
これで、qtpath.bat を実行してから .exe を実行すれば動くようになった。
Qt を使った .exe を実行するには、MinGWとQt関係のDLLが必要になるらしい。
_Qt Creatorでビルドした.exeファイルを実行/配布する - Qiita
今回の場合、以下の2つのディレクトリにパスを通すことで実行可能になる模様。
D:\Qt\Qt5.14.1\5.14.1\mingw73_64\bin D:\Qt\Qt5.14.1\Tools\mingw730_64\bin
PATHの通った場所に、qtpath.bat を作成して、環境変数 PATH に上記の場所を追加するようにしてみる。
@set QTMINGWPATHA=D:\Qt\Qt5.14.1\5.14.1\mingw73_64\bin @set QTMINGWPATHB=D:\Qt\Qt5.14.1\Tools\mingw730_64\bin @set PATH=%QTMINGWPATHA%;%QTMINGWPATHB%;%PATH% @echo Add Qt - MinGW path @echo %QTMINGWPATHA% @echo %QTMINGWPATHB%
これで、qtpath.bat を実行してから .exe を実行すれば動くようになった。
◎ exeを配布可能な状態にする。 :
もし、ビルドした exe を配布したい場合、動作に必要なDLLを一緒に入れて配布しないといけない。そのためには、どんなDLLが必要になるかを調べないといけないわけで…。
_Qt Creatorでビルドした.exeファイルを実行/配布する - Qiita
windeployqt.exe を使えば、exeの動作に必要なDLLを調査して、集めてコピーしてくれるそうで。今回の場合は、以下に入ってる。
使い方は以下。
この、動作に必要なDLLを集めてくるソレを deploy と呼ぶらしいけど。Qt Creator のプロジェクト設定で独自コマンドを走らせて、リリースビルド時に自動でdeployしたほうがいいかもしれない。以下のページで解説されてた。
_Qt Creatorを用いた自動deploy方法 (Windows 編) [Qt] - nprogram’s blog
D:\Qt\Qt5.14.1\Tools\deploy.bat を作成。内容は以下。「デバッグ」でビルドした時は何もせず、「リリース」でビルドした時に、deploy というディレクトリを作って、その中に exe と dll を集めてくれる。はず。
Qt Creator 上のプロジェクト設定で、以下を設定。
とりあえず、これで Helloworld の exe を作るところまではできた。
_Qt Creatorでビルドした.exeファイルを実行/配布する - Qiita
windeployqt.exe を使えば、exeの動作に必要なDLLを調査して、集めてコピーしてくれるそうで。今回の場合は、以下に入ってる。
D:\Qt\Qt5.14.1\5.14.1\mingw73_64\bin\windeployqt.exe
使い方は以下。
windeployqt.exe hoge.exe
この、動作に必要なDLLを集めてくるソレを deploy と呼ぶらしいけど。Qt Creator のプロジェクト設定で独自コマンドを走らせて、リリースビルド時に自動でdeployしたほうがいいかもしれない。以下のページで解説されてた。
_Qt Creatorを用いた自動deploy方法 (Windows 編) [Qt] - nprogram’s blog
D:\Qt\Qt5.14.1\Tools\deploy.bat を作成。内容は以下。「デバッグ」でビルドした時は何もせず、「リリース」でビルドした時に、deploy というディレクトリを作って、その中に exe と dll を集めてくれる。はず。
if "%1"=="デバッグ" goto END set BUILD_MODE=release set DEPLOYTOOL=D:\Qt\Qt5.14.1\5.14.1\mingw73_64\bin\windeployqt.exe if not exist deploy\nul ( mkdir deploy ) xcopy /C /Y *.exe deploy\ %DEPLOYTOOL% deploy\%2.exe :END
Qt Creator 上のプロジェクト設定で、以下を設定。
Command: D:\Qt\5.9.1\tool\deploy.bat Arguments: %{CurrentBuild:Name} %{CurrentProject:Name} Working directory: %{buildDir}
とりあえず、これで Helloworld の exe を作るところまではできた。
[ ツッコむ ]
以上です。