12,984
回編集
613行目: | 613行目: | ||
<br><br> | <br><br> | ||
== | == Qt Creatorの設定 == | ||
==== キットの設定 ==== | |||
Qt Creatorを起動して、キットの設定を行う。<br> | |||
<br> | <br> | ||
= | * QMakeの設定 | ||
*: クロスコンパイルしたQt 6のインストールディレクトリに移動する。 | |||
*: binディレクトリにあるhost-qmakeファイルのシンボリックファイル(ここでは、qmake-hostファイルとする)を作成する。 | |||
*: <code>ln -s host-qmake qmake-host</code> | |||
*: <br> | |||
* キットの作成 | |||
*: [編集] - [設定]を選択して、[設定]画面を開く。 | |||
*: [設定]画面左にある[キット] - [設定]画面右の[Qtバージョン]タブから[追加]ボタンを押下する。 | |||
*: 上記で作成したシンボリックファイルを選択する。 | |||
*: <br> | |||
*: [設定]画面左にある[キット] - [設定]画面右の[キット]タブから[追加]ボタンを押下する。 | |||
*: [デバイスの種類]プルダウンから、[Remote Linux Device]を選択する。 | |||
*: [デバイス]プルダウンから、[設定]画面左にある[デバイス]で作成したターゲットを選択する。 | |||
*: [ビルドデバイス]プルダウンから、[ローカルPC]を選択する。 | |||
*: [Sysroot]項目に、Raspberry Piのシステムルートディレクトリのパスを入力する。 | |||
*: [コンパイラ]項目の[C]プルダウンから、C向けのクロスコンパイラを選択する。 | |||
*: [コンパイラ]項目の[C++]プルダウンから、C++向けのクロスコンパイラを選択する。 | |||
*: [GDB]プルダウンから、クロスコンパイラ向けGDBを選択する。 | |||
*: [Qtバージョン]プルダウンから、上記で設定した[Qtバージョン]を選択する。 | |||
*: [Qt mkspec]項目から、デバイス定義ファイル (/<クロスコンパイルしたQt 6のインストールディレクトリ>/mkspecs/devices/linux-raspberrypi-new-g++ファイル) のパスを入力する。 | |||
*: [CMake Tool]プルダウンから、クロスコンパイルで使用したCMakeを選択する。 | |||
*: <br> | |||
*: [CMakeの設定]項目の[変更...]ボタンを押下して、 | |||
*: <code>-DCMAKE_TOOLCHAIN_FILE:UNINITIALIZED=/<クロスコンパイルしたQt 6のインストールディレクトリ>/lib/cmake/Qt6/qt.toolchain.cmake</code>と入力する。 | |||
*: [適用]ボタンを押下する。 | |||
*: [[ファイル:Install Q6 PP 1.png|フレームなし|中央]] | |||
*: [[ファイル:Install Q6 PP 2.png|フレームなし|中央]] | |||
*: <br> | |||
*: <u>ただし、この設定は、Qt Creatorの左サイド画面にある[プロジェクト] - [キット名] - [ビルド]を選択して、</u> | |||
*: <u>Qt Creatorメイン画面右ペインの[ビルド設定]にある<code>CMAKE_TOOLCHAIN_FILE</code>の値を編集することにより、プロジェクトごとに設定することができる。</u> | |||
*: [[ファイル:Install Q6 PP 3.png|フレームなし|中央]] | |||
<br> | <br> | ||
Raspberry Piの/ | ==== Qtプロジェクトの設定 ==== | ||
次に、Qt Creatorでソフトウェアを開発する時の環境設定を行う。<br> | |||
< | <br> | ||
まず、プロジェクトの環境変数の設定を行う。<br> | |||
Qt Creatorを起動して、Qt Creatorメイン画面左の[プロジェクト] - 左ペインの[Run] - 右ペインの[ビルド設定] - [Environment]項目 - [詳細]プルダウンを開く。<br> | |||
[詳細]プルダウンから[追加]ボタンを押下して、以下の項目を設定する。<br> | |||
<br> | |||
<u>Qtプロジェクトをデバッグする場合は、必ず[デバイス環境の取得]ボタンを押下すること。</u><br> | |||
* Variable - QT_QPA_PLATFORMTHEME | |||
*: Value - qt6ct | |||
* Variable - DISPLAY | |||
*: Value - :0 または :0.0 | |||
* Variable : PATH | |||
*: Value : /home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x/bin ※PATHの設定が既に存在する場合は、追記する | |||
* Variable : LD_LIBRARY_PATH (Raspberry Piの~/.profileファイルに環境変数LD_LIBRARY_PATHを設定している場合) | |||
*: Value : /home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x/lib:/home/<Raspberry Pi's User Name>/InstallSoftware/Qt_6_x_x/plugins/qmltooling | |||
* Variable : QML_IMPORT_PATH | |||
*: Value : /home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x/qml | |||
* Variable : QML2_IMPORT_PATH | |||
*: Value : /home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x/qml | |||
* Variable : QT_PLUGIN_PATH | |||
*: Value : /home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x/plugins | |||
* Variable : QT_QPA_PLATFORM_PLUGIN_PATH | |||
*: Value : /home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x/plugins/platforms | |||
<br> | <br> | ||
また、上記の設定を簡潔に行う場合、Qtプロジェクトのディレクトリにある.pro.userファイルにおいて、<br> | |||
<code><valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">〜</valuemap></code>要素内に、以下の設定を追記する。<br> | |||
<u>以下の設定を追記する場合、必ず、Qtプロジェクトを閉じた状態で行うこと。</u><br> | |||
<syntaxhighlight lang="xml"> | |||
# .pro.userファイル | |||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0"> | |||
<!-- ...略 --> | |||
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"> | |||
<value type="QString">QT_QPA_PLATFORMTHEME=qt6ct</value> | |||
<value type="QString">DISPLAY=:0</value> | |||
<value type="QString">PATH=/home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games</value> | |||
<value type="QString">LD_LIBRARY_PATH=/home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x/lib:/home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x/plugins/qmltooling</value> | |||
<value type="QString">QML_IMPORT_PATH=/home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x/qml</value> | |||
<value type="QString">QML2_IMPORT_PATH=/home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x/qml</value> | |||
<value type="QString">QT_PLUGIN_PATH=/home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x/plugins</value> | |||
<value type="QString">QT_QPA_PLATFORM_PLUGIN_PATH=/home/<Raspberry Piのユーザ名>/InstallSoftware/Qt_6_x_x/plugins/platforms</value> | |||
</valuelist> | |||
<!-- ...略 --> | |||
</valuemap> | |||
</syntaxhighlight> | |||
<br> | |||
もし、デバッグにおいて、以下のようなエラーが出力される場合は、<br> | |||
Qt Creatorのサイドメニューから、[プロジェクト] - [Build & Run] - [Run] - [コマンドライン引数:]項目に、<code>-platform wayland</code>を記述する。<br> | |||
# エラー内容 | |||
Failed to create wl_display (No such file or directory) | |||
... | |||
error: XDG_RUNTIME_DIR not set in the environment | |||
... | |||
qt.qpa.plugin: Could not load the Qt platform plugin "wayland" | |||
<br> | |||
==== GDBの設定 ==== | |||
次に、GDBデバッガの設定を行う。<br> | |||
リモートターゲットをデバッグする時、GDBは、Linux PC側にダウンロードしているRaspberry Piのシステムルートディレクトリを検索する。<br> | |||
そのため、GDBにターゲット側のRaspberry Piのシステムルートディレクトリを検索するように設定する必要がある。<br> | |||
<br> | |||
これは、Qt Creatorメイン画面から、[ツール]メニューバー - [オプション] - [デバッガ] - [GDB]タブ - [追加の起動コマンド]に、以下の内容を設定する。<br> | |||
<u>ただし、この設定はQt Quickを使用する時のみである。(Qt Widgetを使用する場合は設定不要)</u><br> | |||
set sysroot target:/ | |||
<br> | |||
しかし、上記の[追加の起動コマンド]において、<code>set sysroot target:/</code>オプションを使用する場合、デバッグの開始に時間が掛かる。<br> | |||
そのため、以下のように、[追加の起動コマンド]を記述して、<br> | |||
システムルートディレクトリに対して、Qtライブラリのインストールディレクトリのシンボリックリンクを作成することを推奨する。<br> | |||
<br> | |||
システムルートディレクトリに対して、Linux PCに保存したRaspberry Pi向けのQtライブラリがあるディレクトリのシンボクリックリンクを作成する。 | |||
mkdir -p /<Raspberry Piのシステムルートディレクトリ>/home/mobian/InstallSoftware | |||
ln -s /<Qtライブラリのインストールディレクトリ> /<Raspberry Piのシステムルートディレクトリ>/home/mobian/InstallSoftware | |||
# シンボリックリンク名の変更 | |||
mv /<Raspberry Piのシステムルートディレクトリ>/home/mobian/InstallSoftware/<Qtライブラリのインストールディレクトリ> \ | |||
/<Raspberry Piのシステムルートディレクトリ>/home/mobian/InstallSoftware/Qt_6_x_x | |||
<br> | <br> | ||
Qt Creatorメイン画面から、[ツール]メニューバー - [オプション] - [デバッガ] - [GDB]タブ - [追加の起動コマンド]に、以下の内容を設定する。<br> | |||
# Kit名に"RaspberryPi"という文字列が入っている場合のみ、Raspberry Piのシステムルートディレクトリを参照する | |||
# x86 / x64のKitを使用する場合は、Raspberry Piのシステムルートディレクトリを参照しない | |||
[ -n $(grep -i RaspberryPi %{ActiveProject:Kit:Name}) ] && set sysroot /<Raspberry Piのシステムルートディレクトリ> | |||
# または | |||
set sysroot /<Raspberry Piのシステムルートディレクトリ> | |||
<br> | <br> | ||
これにより、Raspberry PiでQtライブラリが使用できる。<br> | |||
<br><br> | <br><br> | ||