aqtinstallでQt開発環境構築（KUbuntu24.04)

# はじめに
　今年もはじまりましたアドベントカレンダー。ここ数年Qtは記事が振るわぬ状況です。今年は別のカレンダーにも参加しているのでこちらをどこまで頑張れるか怪しいところですが、いくつか記事が書ければ良いなぁと思っています。

　私の方は長いこと日本Qtユーザー会に参加していながら仕事はQtほぼ関係なしな状況でしたが、つい最近Qt6を使ったお仕事をさせていただきました。割といろいろ厳しめなお仕事でしたが、なんというかやっぱQtって良いですよね。Qt6はQt5に比べると機能がだいぶ削られていたり、まだ不安定な部分もあったりで悩ましいところもあるのですが、それでも普段やっていたようなmotifさんとか、XlibさんとかTcl/Tkさんに比べるとすごく素晴らしいです（比較対象がおかしいとか言わないように。そういう現場もまだあります）。

　そんなQtですが、ちょっと困るのがインストール数の制限のあるGUIインストーラです。もちろん、OSのパッケージシステム経由で必要なものを入れたり、yoctoを使うとかなら良いのですが、参加者向けの手順書を起こすのにVMで手順を確認したいとか、複数の環境で試したりとかするとあっという間にインストール数が限界に達します。あと地味にCI系の環境作りとかでGUI入りのVMは邪魔だったりして不満が出てきます。

　そんな時に便利な非公式インストーラーである[Another Qt Installer](https://github.com/miurahr/aqtinstall)の紹介と簡単な環境構築を今後の記事のためにもちょっと紹介しておきます。


# Another Qt Installerとは
　[Another Qt Installer](https://github.com/miurahr/aqtinstall)（以下 aqtinstall)は、***非公式な***CLIインストーラーです。The Qt Companyが提供する公式なインストーラーはいつの頃からかおしゃれなGUIインストーラーになりましたが、ユーザー登録が必須だったり、インストール数が限られれ、対話型UIインストーラが向かないCI環境の構築や手順書や書籍執筆などで頻繁に環境構築する方には向かない情況になっていました。
 
　aqtinstallは、LGPL版のQt SDKを、公式インストーラーが利用するのと同じミラーサイトからダウンロードし、インストールしてくれるMiuraさんをはじめとする有志の方々が作成された非公式CUIインストーラーです。

 今回はこちらのツールを使ってのインストール手順を備忘録を兼ねて残しておきます。

## 注意事項（Githubに記載されている中で大事そうなことの取りまとめ）
  - 非公式なのでThe Qt Companyに問い合わせないでください
  - これでインストールするとQt LGPLライセンスに同意したものとみなされます
  - Qtのバイナリは公式インストーラーLGPL版と同等です
  - ミラーサイトのバイナリはaqtinstallの開発者の方々の管理外なのでバイナリがなくなったとかインストールできなくなったとかクレームを入れるのは筋違いです


## 今回の検証環境
　WindowsやmacOSでも利用できるのですが今回は、KUbuntu 24.04上での手順だけ記載しておきます。

```bash:/etc/os-release 
PRETTY_NAME="Ubuntu 24.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04.1 LTS (Noble Numbat)"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=noble
LOGO=ubuntu-logo

```

なお、KUbuntuはKDE版というだけで、Ubuntu 24.04でも同様の手順でできるはずです。WindowsやmacOSの方はぜひ[公式ドキュメント](https://aqtinstall.readthedocs.io/ja/stable/getting_started.html)などを参考にしてみてください。

# ではやってみよう

## まずは使いそうなパッケージ類をインストール

使わないものもはいっているかもしれませんが、GUI開発定番で必要そうなものをいつも入れているのでそのまま記載しておきます。

```bash:
sudo apt install build-essential cmake ninja-build git \
                 libgl1-mesa-dev libvulkan-dev libxcb-xinput-dev \
                 libxcb-xinerama0-dev libxkbcommon-dev libxkbcommon-x11-dev \
                 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 \
                 libxcb-xkb1 libxcb-randr0 libxcb-icccm4 python3-venv
```

## venvにaqtinstall環境のインストール

僕はPython用仮想環境に入れています。

```bash:
python3 -m venv ~/Qt/.venv
source ~/Qt/.venv/bin/activate
pip install aqtinstall
```
## Qt SDKのインストール

aqtinstallのコマンドはaqtです。aptではないのでご注意ください。今回はざっくりと全モジュール入れています。この手順で入れるとライセンス的にGPLなものも入るかもしれません。ご利用時にはモジュールのライセンスをよく確認してご利用ください。

```bash:
aqt install-qt -O ~/Qt linux desktop 6.8.0 -m all
aqt install-doc -O ~/Qt linux 6.8.0 -m all
aqt install-example -O ~/Qt linux 6.8.0 -m all
aqt install-src -O ~/Qt linux 6.8.0
```

## パスを通しておく(bashrcへの追記）
```bash:${HOME}/.bashrc
export PATH=${HOME}/Qt/6.8.0/gcc_64/bin:${PATH}
```
```bash:
source ~/.bashrc
source ~/Qt/.venv/bin/activate
```

## Qt Creatorのインストール
### Doc/Exampleのパス設定

Qt Creatorをインストールした時に困らないようにパスを追加します。

```bash:${HOME}/Qt/6.8.0/gcc_64/bin/qt.conf
[Paths]
Prefix=..
Documentation=../../Docs/Qt-6.8.0
Examples=../../Examples/Qt-6.8.0
```

### インストール
```bash:
aqt install-tool -O ~/Qt linux desktop tools_qtcreator_gui
aqt install-tool -O ~/Qt linux desktop sdktool
```

### SDK情報登録
Qtの自動登録で認識されるようにsdktoolでqmakeのパスを登録しておきます。

```bash:
${HOME}/Qt/Tools/sdktool/libexec/qtcreator/sdktool addQt --id "aqt.installed.qt.6.8" --name "Qt 6.8.0(Desktop)" --qmake ${HOME}/Qt/6.8.0/gcc_64/bin/qmake --type Qt4ProjectManager.QtVersion.Desktop
```

sdktoolを使うと、yocto向けの環境とかをスクリプトでQt Creatorに認識させられるので便利なんですよね。情報がさっぱりないツールではあるのですが…。

## パスを通しておく(bashrcへの追記）
```bash:${HOME}/.bashrc
export PATH=${HOME}/Qt/Tools/QtCreator/bin:${PATH}
```
```bash:
source ~/.bashrc
```

# Qt Creator起動

```:
qtcreator.sh &
```

ここまでの手順で、Qt Creatorが起動でき、Qtでのアプリケーション開発が開始できるかと思います。

# まとめ
　初日から気合の抜けた近況報告と備忘録的な記事で申し訳ありません。まぁ、あまり頑張ってもあとが続きませんので、今年はゆるい、ぬるい記事をモットーに細々と上げていくので、あまり期待せずにふーんと読み飛ばしていただければ幸いです。

 　このツールは日本人の方が作っていることもあって[公式ドキュメント](https://aqtinstall.readthedocs.io/ja/stable/getting_started.html)が用意されています。きちんと使いこなしたい方はそちらを読む方が良いです。
 
　え、手順が多いって、それはスクリプトでも組んでください。何を、どこに、どんな環境に入れたいのかでやるべきことも違いますし、あくまでhermit4がインストール時にやっている一例ということで、スクリプトまでは載せません。この手の環境構築は、何を動かして、どこに入れたのかよく分からずにいると、トラブル時に困ります。あくまで参考レベルにして、ご自身にあった環境構築頑張ってみてください。