インストール - Qt6
概要
Qtは、デスクトップ、組み込み、モバイルプラットフォーム向けのソフトウェアやユーザーインターフェイスの作成を効率化するために設計されたツールを備えた完全な開発フレームワークである。
Qt 6.2 LTSのサポート期間は、2024年9月30日まで、Qt 6.5 LTSのサポート期間は2026年3月30日までである。
Qtライセンスを購入するには、http://www.qt.io/download/ を参照すること。
参考書 | ||
---|---|---|
Introducing Qt 6 C++でモバイルとデスクトップ向けのアプリとゲームを作ることを学ぶ |
Cross-Platform Development with Qt 6 and Modern C++ プラットフォーム依存性を気にすることなく、 モダンなグラフィカルユーザーインターフェースを持つアプリケーションを設計・構築する |
A Guide to Qt 6 Qt 6の初心者向けガイド |
Qtモジュール
Qtビルディングブロック
Qt 6は多数のモジュールから構成されている。
一般的に、モジュールは開発者が使用するためのライブラリである。
いくつかのモジュールは、Qt対応プラットフォームで必須であり、Qt Essentials Modulesと呼ばれている。
その他のモジュールはオプションで、Qt Add-on Modulesと呼ばれている。
開発者の大半はQt Add-on Modulesを使用する機会はあまり無いかもしれないが、一般的な課題に対する貴重な解決策を提供してくれるため、知っておいて損はない。
Qt Essentials Modules
Qt Essentials Modulesは、Qtが使用されるプラットフォームには必須である。
Qt / QMLプログラミングを始めるための最小限のQt6モジュールセットである。
Qt Quick 2を使用して最新のQt6アプリケーションを開発するための基礎を提供している。
モジュールの全リストは、Qtドキュメントモジュールリスト (https://doc.qt.io/qt-6/qtmodules.html#qt-essentials) を参照すること。
- Qt Core
- 他のモジュールで使用される非グラフィカルなコアクラス。
- Qt D-BUS
- LinuxのD-Busプロトコルでプロセス間通信を行うためのクラス。
- Qt GUI
- GUIコンポーネントのベースクラス。
- これは、OpenGLを含む。
- Qt Network
- ネットワークプログラミングをより簡単に、よりポータブルにするためのクラス。
- Qt QML
- QMLとJavaScript言語用のクラス。
- Qt Quick
- カスタムユーザーインターフェースを持つ、高度にダイナミックなアプリケーションを構築するための宣言型フレームワーク。
- Qt Quick Controls
- デスクトップ、組み込み、モバイルデバイス用の高性能なユーザーインターフェイスを作成するための軽量なQMLタイプを提供する。
- これらの型はシンプルなスタイリングアーキテクチャを採用しており、非常に効率的である。
- Qt Quick Layouts
- Layoutsは、Qt Quick 2ベースのアイテムをユーザーインターフェイスに配置するためのアイテムである。
- Qt Quick Test
- QMLアプリケーション用のユニットテストフレームワークで、テストケースはJavaScriptの関数として記述される。
- Qt Test
- Qtアプリケーションやライブラリを単体テストするためのクラス。
- Qt Widgets
- C++ウィジェットであり、Qt GUIを拡張するためのクラス。
Qt Add-On Modules
Qt Essentials Modulesモジュールの他に、Qtは特定の目的に対応する追加モジュールを提供している。
多くのアドオンモジュールは機能が複雑で後方互換性のために存在するか、特定のプラットフォームにのみ適用可能である。
利用可能なアドオンモジュールの一覧を以下に示すが、Qtの公式ドキュメントを参照して、全てのアドオンモジュールを理解すること。
- Network
- Qt Bluetooth / Qt Network Authorization UI Components
- Qt Quick 3D / Qt Quick Timeline / Qt Charts / Qt Data Visualization / Qt Lottie Animation / Qt Virtual Keyboard
- グラフィックス
- : Qt 3D / Qt Image Formats / Qt OpenGL / Qt Shader Tools / Qt SVG / Qt Wayland Compositor
- ヘルパー
- Qt5コア互換API / Qt Concurrent / Qt Help / Qt Print Support / Qt Quick Widgets / Qt SCXML / Qt SQL / Qt State Machine / Qt UI Tools / Qt XML
Qt ライセンス
Qtは、様々なユーザのニーズに対応できるよう、様々なライセンスオプションが用意されている。
商用ライセンスでライセンスされたQtは、第三者とソースコードを共有したくない場合やGNU LGPL version 3の条項に準拠できない場合、プロプライエタリ / 商用ソフトウェアの開発に適している。
LGPL version 3の下でライセンスされたQtは、GNU LGPL version 3またはGNU GPL version 3の条項と条件に従うことができれば、Qtアプリケーションの開発に適している。
Qtマーケットプレイスライセンス契約に基づいてライセンスされたQtコンポーネントは、
商用またはGNU LGPL version 3またはGNU GPL version 3の条件に基づいてライセンスされたQtソフトウェアコンポーネントと共通のQtアプリケーションの開発に適している。
Qtには、元の開発者から特定のオープンソースライセンスの下でライセンスされているサードパーティのコードも含まれている。
また、Qtのサンプルは、The Qt Companyの商用ライセンスおよびBSD 3条項ライセンスの下で入手可能である。
Qtライセンスの概要については、http://qt.io/licensing/ を参照すること。
通常のインストール
依存関係のライブラリのインストール
Qtの実行に必要な依存関係のライブラリをインストールする。
これらのライブラリは不要な可能性がある。(調査中)
# RHEL sudo dnf install mesa-libOSMesa-devel # SUSE sudo zypper install Mesa-devel Mesa-KHR-devel \ vulkan-headers # Vulkanを使用するプロジェクト、および、Vulkanバックエンドを利用する可能性のある場合 または sudo zypper install Mesa-KHR-devel Mesa-devel Mesa-dri-devel Mesa-libEGL-devel Mesa-libGL-devel Mesa-libGLESv1_CM-devel Mesa-libGLESv2-devel \ Mesa-libglapi-devel kbproto-devel libOSMesa-devel libOSMesa8 libX11-devel libXau-devel libdrm-devel libgbm-devel \ libglvnd-devel libxcb-devel libxcb-screensaver0 libxcb-xf86dri0 libxcb-xtest0 libxcb-xvmc0 pthread-stubs-devel xproto-devel \ xcb-util-cursor-devel xcb-util-image-devel xcb-util-renderutil-devel \ vulkan-headers # Vulkanを使用するプロジェクト、あるいは、Vulkanバックエンドを使用する場合
- Qt 6におけるVulkan headerの必要性
- Qt 6では、グラフィックスバックエンドの1つとしてVulkanをサポートしている。
- そのため、Vulkanを使用するプロジェクトやVulkanバックエンドを利用する可能性のある場合には、Vulkan headerが必要になる。
- Vulkan headerの用途
- Vulkan headerは、以下に示すような目的で使用される。
- Vulkan APIの定義: 関数プロトタイプ、構造体、定数等の定義を提供する。
- Vulkanを使用したグラフィックス処理: 3Dレンダリングや計算処理を行う際に必要な関数や構造体を定義する。
- Qt 6のVulkanバックエンド: Qt 6がVulkanバックエンドを使用する際に必要な情報を提供する。
Vulkanサポートを無効にするいくつかの方法を、以下に示す。
- Qt変数を使用して、Vulkanサポートを無効にする。
- set(QT_NO_CREATE_VERSIONLESS_TARGETS ON)
- set(CMAKE_DISABLE_FIND_PACKAGE_Vulkan TRUE)
- find_packageコマンドを使用して、Vulkanサポートを無効にする。
- 特定のQtライブラリでVulkanが使用されている場合、該当ライブラリのfind_packageコマンドの実行時にOPTIONALフラグを追加する。
- これにより、Vulkan headerの検索に失敗してもエラーにはならない。
- find_package(Qt6 COMPONENTS Gui OPTIONAL_COMPONENTS Vulkan)
- 特定のQt機能を無効にして、Vulkanサポートを無効にする。
- 特定のQt機能がVulkanを必要としている場合、それらの機能を無効にする。
- set(QT_FEATURE_vulkan OFF CACHE BOOL "" FORCE)
Qtのダウンロード
最新版のQtをダウンロードするため、以下のコマンドを実行する。
ファイル情報を知りたい場合はこのWebサイトを参照する。
wget http://download.qt.io/official_releases/online_installers/qt-unified-linux-x64-online.run
ダウンロードしたファイルのアクセス権限を変更する。
chmod u+x qt-unified-linux-x64-online.run
Qtのインストール
/usr/localディレクトリ等にインストールする場合は、スーパーユーザでインストールする。
ホームディレクトリにインストールする場合は、ローカルユーザでインストールする。
次に、GCCおよびmake、付随するライブラリをインストールする。
# RHEL sudo dnf groupinstall "Development tools" # SUSE sudo zypper install --type pattern devel_basis
Qtをインストールする。
./qt-unified-linux-x64-online.run
Qtのインストール画面に従って、インストールを実行する。
Qtをインストールした後、必要ならば、以下のコマンドを実行する。
これは、pkg-config
コマンドが指すディレクトリを変更する設定である。
cd /<Qtのインストールディレクトリ>/<Qtのバージョン>/gcc_64/lib cp ./pkgconfig ./pkgconfig_org cd /<Qtのインストールディレクトリ>/<Qtのバージョン>/gcc_64/lib/pkgconfig sed -i -e "s/prefix=\/home\/qt\/work\/install/prefix=\/<Qtのインストールディレクトリ>\/<Qtのバージョン>\/gcc_64/g" ./*
ソースコードからインストール
必須環境
- Qt 6.0以降
- Qt WebEngine module for QtWebEngine based help viewer
- GCC 7以降
- オプション : CMake
- CMakeを使用してLLVM / ClangとQt Creatorをビルドする時に必要である。
- オプション : Ninja
- CMakeを使用してビルドする時に必要である。
- オプション : LLVM / Clang 8.0.0以降
- Clang Code Model、Clang Tools、ClangFormat、Clang PCH Manager、Clang Refactoringプラグインに必要である。
- LLVM C++ APIは互換性を保証するものではないので、それ以降のバージョンがコンパイルできない場合は、そのバージョンをサポートしていない。
- オプション : Qbs 1.7.x
- Qtのソースコードには、Qbs自身も含まれている。
また、Qtをビルドする時のオプション設定を以下に記載する。
# オプション : 環境変数PATHにおいて、llvm-configのパスが通っていない場合に必要である export LLVM_INSTALL_DIR=<LLVMのインストールディレクトリ> # オプション : Clangのリファクタリングを無効にする場合、1を設定する export QTC_DISABLE_CLANG_REFACTORING=1 # オプション : QbsProjectManagerプラグインがQbsを使用する場合に必要である export QBS_INSTALL_DIR=/path/to/qbs # オプション : KSyntaxHighlightingを使用する場合、KSYNTAXHIGHLIGHTING_LIB_DIRライブラリを保持するディレクトリを設定する # インクルードディレクトリの自動推定に失敗する場合、KSYNTAXHIGHLIGHTING_INCLUDE_DIRを設定して、 # 両方の設定をqmakeコマンドのオプションで渡すこともできる export KSYNTAXHIGHLIGHTING_INCLUDE_DIR=<インクルードファイルを保持するディレクトリ> export KSYNTAXHIGHLIGHTING_LIB_DIR=<ライブラリを保持するディレクトリ>
依存関係のライブラリのインストール
Qtのソースコードをコンパイルするために必要な依存関係のライブラリをインストールする。
sudo zypper install git-core gcc-c++ make flex bison gperf libicu-devel python3 perl \ mozilla-nss-devel nodejs10 nodejs10-devel ruby mozilla-nspr-devel \ xorg-x11-libxcb-devel xcb-util-devel xcb-util-image-devel xcb-util-keysyms-devel xcb-util-renderutil-devel \ xcb-util-wm-devel xorg-x11-devel libxkbcommon-x11-devel libxkbcommon-devel libXi-devel \ dbus-1-devel libXcomposite-devel libXcursor-devel libXrandr-devel libXtst-devel wayland-devel \ pulseaudio-libs-devel alsa-devel alsa-lib-devel gstreamer1-devel gstreamer1-plugins-base-devel
- fontconfig-devel
- libfontenc-devel
- libXft-devel
- libx11-devel
- libxcb-devel
- libXext-devel
- libXfixes-devel
- libXrender-devel
- Mesa-libGL-devel
- libXinerama-devel
- libxcb-shm0-dev
- libxcb-sync0-dev
- libxcb-shape0-dev
ソースコードのダウンロード
Qtのソースコードをダウンロードする。
git clone --recursive https://code.qt.io/qt-creator/qt-creator.git
ソースコードのビルド
Qtのソースコードをビルドするため、ビルド用のディレクトリを作成する。
mkdir build cd build
- qmakeを使用する場合
- オプションのClang Code Modelプラグインをビルドする場合、LLVMのインストールディレクトリへのパスを指定する必要がある。
export LLVM_INSTALL_DIR=<LLVMのインストールディレクトリ>
qmake ../qt-creator/qtcreator.pro
make qmake_all
make -j $(nproc)
- もし、
Project ERROR: Unknown module(s) in QT: script
というエラーが出力される場合、以下のコマンドを実行する。 make -j $(nproc) module-qtscript
- cmakeを使用する場合
- Qtのソースコードをビルドする。
cmake -G Ninja -D CMAKE_BUILD_TYPE=Release -D CMAKE_PREFIX_PATH=<Qtのインストールディレクトリ>; <LLVMのインストールディレクトリ> ../qt-creator
cmake --build .. --parallel $(nproc)
コンパイルには時間が掛かることに注意する。(バイナリファイルは、qt-createor-build/binディレクトリに作成される)
Qtのインストール
Qtをインストールする。
# qmakeを使用する場合 make install # cmakeを使用する場合 cmake --install ..
Qtのインストールディレクトリの設定
Qtのインストールディレクトリを環境変数に設定することができる。
この環境変数QT_INSTALL_PREFIX
は、QtツールやビルドシステムがQtのインストールディレクトリを探す時に使用される。
export QT_INSTALL_PREFIX=<Qtのインストールディレクトリ>
Qtのインストールディレクトリを確認する場合は、以下に示すコマンドを実行する。
qtpaths --install-prefix
Qtのインストールディレクトリの指定 (CMakeコマンド)
CMakeを使用する場合、Qtのインストールディレクトリを指定する場合は、CMakeコマンドのCMAKE_PREFIX_PATH
オプションを付加する。
cmake -DCMAKE_PREFIX_PATH=<Qtのインストールディレクトリ> ..
または、CMakeLists.txtに明示的に設定することもできる。
set(CMAKE_PREFIX_PATH "<Qtのインストールディレクトリ>")
デスクトップエントリの追加
以下のコマンドを実行して、デスクトップエントリを追加する。
vi ~/.local/share/applications/Qt_Creator.desktop
# Qt_Creator.desktopファイル [Desktop Entry] Type=Application Exec=/<Qt 6のインストールディレクトリ>/Tools/QtCreator/bin/qtcreator %F Name=Qt Creator <バージョン名> GenericName=Qt Creator Icon=QtProject-qtcreator StartupWMClass=qtcreator Terminal=false Categories=Development;IDE;Qt; MimeType=text/x-c++src;text/x-c++hdr;text/x-xsrc;application/x-designer;application/vnd.qt.qmakeprofile;application/vnd.qt.xml.resource;text/x-qml;text/x-qt.qml;text/x-qt.qbs;
vi ~/.local/share/applications/Qt_MaintenanceTool.desktop
# Qt_MaintenanceTool.desktopファイル [Desktop Entry] Type=Application Path=/home/<ユーザ名>/Qt Name=Qt Maintenance Tool GenericName=Install or uninstall Qt components. Exec=/<Qt 6のインストールディレクトリ>/MaintenanceTool Icon=/home/<ユーザ名>/Qt/QtIcon.png Terminal=false Categories=Development;Qt;
vi ~/.local/share/applications/Qt_Designer.desktop
# Qt_Designer.desktopファイル [Desktop Entry] Type=Application Name=Qt Designer <バージョン名> GenericName=Qt Designer Comment= Path= Exec=/<Qt 6のインストールディレクトリ>/<バージョン名>/gcc_64/bin/designer %F Icon=/home/<ユーザ名>/.icons/Qt_Designer.png StartupNotify=true StartupWMClass=qtdesigner Terminal=false TerminalOptions= Categories=Development;IDE;Qt; MimeType=text/x-c++src;text/x-c++hdr;text/x-xsrc;application/x-designer;application/vnd.qt.qmakeprofile;application/vnd.qt.xml.resource;text/x-qml;text/x-qt.qml;text/x-qt.qbs; X-DBUS-ServiceName= X-DBUS-StartupType= X-KDE-SubstituteUID=false X-KDE-Username=
日本語入力
専用のインストーラからQtをインストールする場合、Qt Creatorにおいて、Fcitxで日本語が入力できない問題が存在する。
これは、plugins/platforminputcontextsディレクトリにlibfcitxplatforminputcontextplugin.soファイルが欠如しているため、IMEの切り替えができないからである。
そのため、ユーザがlibfcitxplatforminputcontextplugin.soファイルを含むfcitx-qt5ライブラリを、ソースコードからビルドしてインストールする必要がある。
FcitxおよびFcitx5を使用している場合で手順が異なることに注意すること。
Fcitxを使用している場合
fcitx-qt5ライブラリ(Fcitx)をインストールする。
- まず、Qt Creatorを起動して、[ヘルプ]メインメニューから[About Qt Creator...]を選択、バージョン情報を確認する。
以下の画像では、Qt Creatorのバージョンは6.0.2、Qt Creatorのビルドに使用されたQt SDKは6.2.2となっている。 - fcitx-qt5のインストールに必要な依存関係のライブラリをインストールする。
sudo zypper install extra-cmake-modules libxkbcommon-devel
- fcitx-qt5のソースコードをダウンロードする。
git clone https://github.com/fcitx/fcitx-qt5.git
- もし、上記の画像のように、Qt Creatorのビルドに使用されたQt SDKが6の場合、
Qtメンテナンスツールを起動して、[コンポーネントの追加または削除]から該当するQtのバージョン以降の[Desktop gcc 64-bit]のみをインストールする。 - ダウンロードしたfcitx-qt5のディレクトリに移動して、ビルド向けディレクトリを作成する。
cd fcitx-qt5 && mkdir build && cd build
- fcitx-qt5ライブラリをビルドおよびインストールする。
インストールディレクトリは、自動的に/<Qtのインストールディレクトリ>/<バージョン>/gcc_64/plugins/platforminputcontextsディレクトリにインストールされる。- Qt Creatorのビルドに使用されたQt SDKが5の場合
export PATH="/<Qtのインストールディレクトリ>/<Qt5のバージョン>/gcc_64/bin:$PATH"
export CPATH="/<Qtのインストールディレクトリ>/<Qt5のバージョン>/gcc_64/include:$CPATH"
export LD_LIBRARY_PATH="/<Qtのインストールディレクトリ>/<Qt5のバージョン>/gcc_64/lib:$LD_LIBRARY_PATH"
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$(pkg-config --variable pc_path pkg-config)"
export PKG_CONFIG_PATH="/<Qtのインストールディレクトリ>/<Qt5のバージョン>/gcc_64/lib/pkgconfig:$PKG_CONFIG_PATH"
- Qt Creatorのビルドに使用されたQt SDKが6の場合
export PATH="/<Qtのインストールディレクトリ>/<Qt6のバージョン>/gcc_64/bin:$PATH"
export CPATH="/<Qtのインストールディレクトリ>/<Qt6のバージョン>/gcc_64/include:$CPATH"
export LD_LIBRARY_PATH="/<Qtのインストールディレクトリ>/<Qt6のバージョン>/gcc_64/lib:$LD_LIBRARY_PATH"
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$(pkg-config --variable pc_path pkg-config)"
export PKG_CONFIG_PATH="/<Qtのインストールディレクトリ>/<Qt6のバージョン>/gcc_64/lib/pkgconfig:$PKG_CONFIG_PATH"
- ビルドおよびインストール
ENABLE_LIBRARY=$(pkg-config --exists fcitx icu-uc && echo ON || echo OFF) && \
cmake .. -DENABLE_LIBRARY=$ENABLE_LIBRARY \
-DCMAKE_C_COMPILER=<GCC 8以降:Qt Creatorのビルドに使用されたQt SDKが6の場合> -DCMAKE_CXX_COMPILER=<GCC 8以降:Qt Creatorのビルドに使用されたQt SDKが6の場合> \
-DCMAKE_BUILD_TYPE=Release \
-DENABLE_QT4=<Qt Creatorのビルドに使用されたQt SDKが4の場合はon、それ以外はoff> \
-DENABLE_QT5=<Qt Creatorのビルドに使用されたQt SDKが5の場合はon、それ以外はoff> \
-DENABLE_QT6=<Qt Creatorのビルドに使用されたQt SDKが6の場合はon、それ以外はoff> \
-DCMAKE_PREFIX_PATH=/<Qt 5のインストールディレクトリ>/<バージョン>/gcc_64 # Qt Creatorのビルドに使用されたQt SDKが5の場合
-DCMAKE_PREFIX_PATH=/<Qt 6のインストールディレクトリ>/<バージョン>/gcc_64 # Qt Creatorのビルドに使用されたQt SDKが6の場合
make -j $(nproc)
make install
- Qt Creatorのビルドに使用されたQt SDKが5の場合
- インストールしたlibfcitxplatforminputcontextplugin.soファイルを、/<Qtのインストールディレクトリ>/Tools/QtCreator/lib/Qt/plugins/platforminputcontextsディレクトリに配置する。
これにより、Qt Creator等において、FcitxでのIMEの切り替えができるようになる。
ただし、Qt Creatorをアップデートする場合は、fcitx-qt5を再インストールする必要があるため注意すること。cp /<Qtのインストールディレクトリ>/<バージョン>/gcc_64/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so \
/<Qtのインストールディレクトリ>/Tools/QtCreator/lib/Qt/plugins/platforminputcontexts
Fcitx5を使用している場合
fcitx5-qtライブラリ(Fcitx5)をインストールする。
- まず、Qt Creatorを起動して、[ヘルプ]メインメニューから[About Qt Creator...]を選択、バージョン情報を確認する。
以下の画像では、Qt Creatorのバージョンは6.0.2、Qt Creatorのビルドに使用されたQt SDKは6.2.2となっている。 - fcitx-qt5のインストールに必要な依存関係のライブラリをインストールする。
sudo zypper install cmake extra-cmake-modules libxkbcommon-devel fcitx5-devel
- fcitx-qt5のソースコードをダウンロードする。
git clone https://github.com/fcitx/fcitx5-qt
- もし、上記の画像のように、Qt Creatorのビルドに使用されたQt SDKが6の場合、
Qtメンテナンスツールを起動して、[コンポーネントの追加または削除]から該当するQtのバージョン以降の[Desktop gcc 64-bit]のみをインストールする。 - ダウンロードしたfcitx5-qtのディレクトリに移動して、ビルド向けディレクトリを作成する。
cd fcitx5-qt && mkdir build && cd build
- fcitx5-qtライブラリをビルドおよびインストールする。
インストールディレクトリは、自動的に/<Qtのインストールディレクトリ>/<バージョン>/gcc_64/plugins/platforminputcontextsディレクトリにインストールされる。- Qt Creatorのビルドに使用されたQt SDKが5の場合
export PATH="/<Qtのインストールディレクトリ>/<Qt5のバージョン>/gcc_64/bin:$PATH"
export CPATH="/<Qtのインストールディレクトリ>/<Qt5のバージョン>/gcc_64/include:$CPATH"
export LD_LIBRARY_PATH="/<Qtのインストールディレクトリ>/<Qt5のバージョン>/gcc_64/lib:$LD_LIBRARY_PATH"
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$(pkg-config --variable pc_path pkg-config)"
export PKG_CONFIG_PATH="/<Qtのインストールディレクトリ>/<Qt5のバージョン>/gcc_64/lib/pkgconfig:$PKG_CONFIG_PATH"
- Qt Creatorのビルドに使用されたQt SDKが6の場合
export PATH="/<Qtのインストールディレクトリ>/<Qt6のバージョン>/gcc_64/bin:$PATH"
export CPATH="/<Qtのインストールディレクトリ>/<Qt6のバージョン>/gcc_64/include:$CPATH"
export LD_LIBRARY_PATH="/<Qtのインストールディレクトリ>/<Qt6のバージョン>/gcc_64/lib:$LD_LIBRARY_PATH"
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$(pkg-config --variable pc_path pkg-config)"
export PKG_CONFIG_PATH="/<Qtのインストールディレクトリ>/<Qt6のバージョン>/gcc_64/lib/pkgconfig:$PKG_CONFIG_PATH"
- ビルドおよびインストール
cmake .. \
-DCMAKE_C_COMPILER=<GCC 8以降:Qt Creatorのビルドに使用されたQt SDKが6の場合> -DCMAKE_CXX_COMPILER=<GCC 8以降:Qt Creatorのビルドに使用されたQt SDKが6の場合> \
-DCMAKE_BUILD_TYPE=Release \
-DENABLE_X11=ON \ # X11を使用している場合
-DBUILD_ONLY_PLUGIN=ON \ # プラグインのみをインストールする場合
-DENABLE_QT4=<Qt Creatorのビルドに使用されたQt SDKが4の場合はon、それ以外はoff> \
-DENABLE_QT5=<Qt Creatorのビルドに使用されたQt SDKが5の場合はon、それ以外はoff> \
-DENABLE_QT6=<Qt Creatorのビルドに使用されたQt SDKが6の場合はon、それ以外はoff> \
-DCMAKE_PREFIX_PATH=/<Qt 5のインストールディレクトリ>/<バージョン>/gcc_64 # Qt Creatorのビルドに使用されたQt SDKが5の場合
-DCMAKE_PREFIX_PATH=/<Qt 6のインストールディレクトリ>/<バージョン>/gcc_64 # Qt Creatorのビルドに使用されたQt SDKが6の場合
- # または
export ENABLE_LIBRARY=$(pkg-config --exists fcitx icu-uc && echo ON || echo OFF) && \
cmake .. -DENABLE_LIBRARY=$ENABLE_LIBRARY \
-DCMAKE_C_COMPILER=<GCC 8以降:Qt Creatorのビルドに使用されたQt SDKが6の場合> -DCMAKE_CXX_COMPILER=<GCC 8以降:Qt Creatorのビルドに使用されたQt SDKが6の場合> \
-DCMAKE_BUILD_TYPE=Release \
-DENABLE_QT4=<Qt Creatorのビルドに使用されたQt SDKが4の場合はon、それ以外はoff> \
-DENABLE_QT5=<Qt Creatorのビルドに使用されたQt SDKが5の場合はon、それ以外はoff> \
-DENABLE_QT6=<Qt Creatorのビルドに使用されたQt SDKが6の場合はon、それ以外はoff> \
-DCMAKE_PREFIX_PATH=/<Qt 5のインストールディレクトリ>/<バージョン>/gcc_64 # Qt Creatorのビルドに使用されたQt SDKが5の場合
-DCMAKE_PREFIX_PATH=/<Qt 6のインストールディレクトリ>/<バージョン>/gcc_64 # Qt Creatorのビルドに使用されたQt SDKが6の場合
make -j $(nproc)
make install
- Qt Creatorのビルドに使用されたQt SDKが5の場合
- インストールしたlibfcitxplatforminputcontextplugin.soファイルを、/<Qtのインストールディレクトリ>/Tools/QtCreator/lib/Qt/plugins/platforminputcontextsディレクトリに配置する。
これにより、Qt Creator等において、FcitxでのIMEの切り替えができるようになる。
ただし、Qt Creatorをアップデートする場合は、fcitx-qt5を再インストールする必要があるため注意すること。cp /<Qtのインストールディレクトリ>/<バージョン>/gcc_64/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so \
/<Qtのインストールディレクトリ>/Tools/QtCreator/lib/Qt/plugins/platforminputcontexts
WebAssemblyの開発
Emscripten SDKのインストール
Emscripten SDKは、全てのSDKのメンテナンスを実行するために使用される。
SDKをインストールするのは1度だけで、その後はEmscripten SDKが全てのアップデートを行う。
Emscripten SDKを使用すると、任意のSDKまたはツールをダウンロード、インストール、削除することができ、Githubで開発中の最先端のバージョンを使用することもできる。
Emscripten SDKのGithubにアクセスして、ファイルをダウンロードする。
ダウンロードしたファイルを解凍する。また、必要であれば、任意のディレクトリに配置する。
tar xf emsdk-<バージョン>.tar.gz cd emsdk-<バージョン>
Emscripten SDKの使用方法
Emscripten SDKのインストールディレクトリに移動する。
- 利用可能なツールの最新のレジストリを取得する。
./emsdk update
- 最新のSDKツールをダウンロードしてインストールする。
./emsdk install latest
- 最新のSDKを指すようにコンパイラを設定する。
./emsdk activate latest
環境変数の設定
~/.profileファイル等にEmscripten SDKの環境変数に追加する。
# ~/.profileファイル等
export PATH="$HOME/InstallSoftware/Emscripten_SDK:$PATH"
export PATH="$HOME/InstallSoftware/Emscripten_SDK/upstream/emscripten:$PATH"
また、emsdk_env.shファイルを実行することにより、現在のシェルに対して環境変数を追加することもできる。
source "/<Emscripten SDKのインストールディレクトリ>/emsdk_env.sh"
Felgoのインストール
Felgoとは
Felgoは、Qtフレームワークをベースに大幅に拡張したクロスプラットフォームのソフトウェア開発ソリューションであり、
PC、Android、iOS、Web(WebAssembly)、組み込みシステム等の多くのプラットフォームでネイティブに動作する。
Felgoは、以下に示すような独自のQt/QMLツール、クラウドサービス、Qtを拡張する200以上のAPIを追加したFelgo SDKを提供している。
- 高度なコントロールとネイティブなナビゲーション
- テーマとスタイル
- レイアウト
- ファイル操作(ローカル/リモート)
- データ管理とモデル/ビュー
- マルチメディア
- RESTネットワーク(※)
- ネイティブなダイアログと機能
※RESTとは
Webシステムに適用したソフトウェアの設計様式のことであり、パラメータを指定して特定のURLにHTTPでアクセスする時、
XMLやJSONなどで記述されたメッセージが送られてくるようなシステム、および、そのような呼び出し規約のことである。
本来のRESTの設計原則は主として以下の4つの項目からなる。
- セッション等の状態管理を行わず、やり取りされる情報はそれ自体で完結して解釈することができる。(WebではHTTP自体にはセッション管理の機構はない)
- 情報を操作する命令の体系が予め定義・共有されている。(WebではHTTPメソッドに相当)
- 全ての情報は汎用的な構文で一意に識別される。(URL/URIに相当)
- 情報の一部として、別の状態や別の情報への参照を含めることができる。(ハイパーメディア的な書式で情報を表現する。HTMLやXMLに相当)
Felgoのインストール
既存のQtにFelgoを拡張機能として追加することができる。
まず、FelgoのQt Marketplaceにアクセスおよびログインした後、[Qt extension]を選択する。
必要な情報を入力して、[Continue to payment]を選択する。
次に、Qtメンテナンスツールを起動して、[コンポーネントの選択]画面の[Marketplace]項目でFelgoを選択およびインストールする。
もし、Felgoをインストールできない場合は、Felgoインストーラを使用して、既存のQtとは別にFelgoをインストールする。
※注意
最新版のQtに対応したFelgoがまだリリースされていない場合は、Felgoはビルドキットに追加されない。
Felgoのアカウントの削除する場合は、Felgoの公式Webサイトにアクセスおよびログインする。
アカウント設定ページ右の[Edit] - アカウント設定ページ下の[Account Termination Request] - [Delete Account]ボタンを押下する。
Raspberry Piのクロスコンパイル
Raspberry Piでクロスコンパイルを行う場合、インストール_-_Qt6_Raspberry_Piのページを参照すること。
PinePhoneのクロスコンパイル
PinePhoneでクロスコンパイルを行う場合、インストール_-_Qt6_PinePhoneのページを参照すること。
OpenSSL 3のインストールおよび設定
Qt 6において、QNetworkAccessManagerクラス等を使用する場合、以下に示すようなエラーが発生する場合がある。
qt.tlsbackend.ossl: Incompatible version of OpenSSL (built with OpenSSL >= 3.x, runtime version is < 3.x)
これは、Qt 6が古いバージョンのOpenSSLを参照しているために発生する。
これを解決するには、QtオンラインインストーラからOpenSSL 3.x.xのソースコードをダウンロードして、ビルドおよびインストールすることを推奨する。
まず、Qtオンラインインストーラを起動して、[コンポーネントの選択]画面から[Qt] - [Developer and Designer Tools] - [OpenSSL 3.x.x Toolkit]にチェックを入力する。
[次へ]ボタンを押下して、OpenSSL 3.x.xのソースコードをダウンロードする。
ダウンロードが完了した後、/<Qtのインストールディレクトリ>/Tools/OpenSSLv3/srcディレクトリに移動する。
cd /<Qtのインストールディレクトリ>/Tools/OpenSSLv3/src
OpenSSL 3.x.xをビルドおよびインストールする。
mkdir build && cd build ../Configure --prefix=<OpenSSL3のインストールディレクトリ> make -j $(nproc) make install
OpenSSL 3.x.xをQt Creatorで使用するため、環境変数を設定する。
- Qt Creatorを起動する。
- Qt Creatorの画面左にある[プロジェクト]を選択する。
- [ビルドと実行]から、該当するキットの[実行]を選択する。
- [実行環境]セクションで、[環境]セクションから[この実行構成用の基本環境:]プルダウンから[ビルド時の環境変数]を選択して、以下に示す環境変数を追加する。
PATH=+/<OpenSSL3のインストールディレクトリ>/bin LD_LIBRARY_PATH=+/<OpenSSL3のインストールディレクトリ>/lib64 PKG_CONFIG_PATH=+/<OpenSSL3のインストールディレクトリ>/lib64/pkgconfig OPENSSL_CONF=/<OpenSSL3のインストールディレクトリ>/ssl/openssl.cnf
または、以下に示す方法でもOpenSSL 3.x.xを設定することができる。
- [ビルドと実行]から、該当するキットの[ビルド]を選択する。
- [CMake]セクションの[Base environment the CMake configure step:]プルダウンから[System Environment]を選択して、以下に示す環境変数を追加する。
PATH=+/<OpenSSL3のインストールディレクトリ>/bin LD_LIBRARY_PATH=+/<OpenSSL3のインストールディレクトリ>/lib64 PKG_CONFIG_PATH=+/<OpenSSL3のインストールディレクトリ>/lib64/pkgconfig OPENSSL_CONF=/<OpenSSL3のインストールディレクトリ>/ssl/openssl.cnf
メニューバーの表示 / 非表示
メニューバーの表示 / 非表示を切り替えて、画面上のスペースを節約することができる。
[表示]メインメニュー - [メニューバーを表示]チェックボックスの選択を解除する。
メニューバーを再度表示するには、[Ctrl] + [Alt] + [M]キーを同時押下する。
エラー関連
libdbusに関する問題
以下に示すようなlibdbusに関するコンパイルエラーが発生する場合がある。
# ...略 /<GCCクロスコンパイラのパス>/bin/ld: /<PinePhoneのシステムルート>/usr/lib/aarch64-linux-gnu/libdbus-1.a(libdbus_1_la-dbus-message.o): relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `dbus_message_unref' which may bind externally can not be used when making a shared object; recompile with -fPIC # ...略
これは、システムルート内にあるlibdbusが動的共有オブジェクトでない場合に発生する可能性がある。
これは通常、Mobian / Manjaro ARMの再インストールすることで解決できる。
別の方法としては、libdbus-1-devパッケージを再インストールすることである。
しかし、この問題が解決せず、D-Busが不要の場合は-DFEATURE_dbus=OFF
オプションを付加することにより、D-Bus機能を無効にすることができる。
さらに別の方法として、set(QT_LINKER_FLAGS "-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed")
の行を、
set(QT_LINKER_FLAGS "-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -ldbus-1")
に変更する。
この場合、/<PinePhoneのシステムルート>/usr/lib/aarch64-linux-gnu/libdbus-1.soへのリンクが有効であることを確認する。
(同階層のディレクトリのlibdbus-1.so.X.XX.XXにリンクされているはずである)
※注意
Bluetoothモジュールを動作させるにはD-Bus機能が必要である。
libstdc++のエラー
デバッグ時において、以下に示すようなエラーが出力される場合はある。
/Path/to/<Project Name>/bin/<Binary Name>: /lib/aarch64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.XX' not found (required by /Path/to/Qt6 Library/lib/libQt6Qml.so.6)
クロスコンパイラのlibstdc++.so.6ファイルにおいて、ターゲットとなるOSのlibstdc++.so.6ファイルのバージョンと同等または古いものを使用する必要がある。
例えば、Debian 12 (Mobian 12)はGLIBCXX_3.4.30であるため、GCC 12.2ツールチェーン以前のものを使用する。
以下に示すコマンドを実行して、GLIBCXXのバージョンを確認することができる。
# クロスコンパイラ strings /<クロスコンパイラのインストールディレクトリ>/<アーキテクチャ名 例: aarch64-linux-gnu>/lib64/libstdc++.so.6 | grep -E '^GLIBCXX' # Manjaro strings /usr/lib/libstdc++.so.6 | grep -E '^GLIBCXX' # Mobian strings /usr/lib/aarch64-linux-gnu/libstdc++.so.6 | grep -E '^GLIBCXX'
AT-SPI2の警告
Qt6ライブラリを使用してプロジェクトをクロスコンパイルして実行する時、以下に示すようなAT-SPI2に関するエラーが出力される場合がある。
qt.accessibility.atspi Error Not connected to D-Bus server
もし、アクセシビリティが不要な場合、Qt6ライブラリのコンパイルにおいて、cmake
コマンドにアクセシビリティを無効にするオプションを付加する。
-DQT_FEATURE_accessibility=OFF -DQT_FEATURE_accessibility_atspi_bridge=OFF
GDBデバッグ実行時におけるキャッシュファイルの警告
デバッグ実行時において、以下に示すような警告が非常に多く出力される場合がある。
index cache: could not make cache directory: Permission denied
この警告は、デバッグ実行時のターゲットデバイスのディレクトリが存在しない場合、または、該当ディレクトリに書き込み権限が無い場合に出力される。
この警告を抑制する場合は、以下に示す設定を行う。
- Qt Creatorの[編集]メニューバー - [Preferences...]を選択する。
- [設定]ダイアログが開くので、画面左ペインにある[デバッガ] - 画面右ペインにある[GDB]タブ - [追加の起動コマンド]に、以下に示す設定を入力する。
set index-cache directory /tmp/GDB
この設定により、/tmp/GDBディレクトリにデバッグ関連のログファイルが出力されるようになる。