Linux あれこれ

Linux 関連(一部 Windows11 )の備忘録です。

LXLE Linux 18.04.3 にて、「CuteMarkEd」をビルドしてインストール〈H124-5〉

登録日: 2021-06-15 更新日: 2021-06-15

前回、「LXLE Linux 18.04.3」をUSB メモリにインストール しました。

flatpak で、Markdown エディタの「CuteMarkEd」をインストール しました。使えそうなアプリですが、残念ながらflatpak ではうまく動きません。

snap に登録はないので、ソースからビルドできないか、トライしてみました。 その備忘録です。

-

ついでに、「Qt Creator」について学びました。

-

-

使用したPC は「ASUS Chromebox CN60 」で、プロセッサは第4世代の「Intel Celeron 2955U 」で古めのPC です。BIOS 立ち上げでなく、UEFI 立ち上げにF/W を置換しています。

-

(注)リンクを戻るときはブラウザの左上の「←」をクリック

-

-


目次

-

「LXLE Linux 18.04.3 のインストール:」

「Qt5 のビルド環境をインストール:」

「CuteMarkEd をビルドしてインストール:」

-

「手動でQt アプリを作成:」

-

「QtCreator のインストール:」

「Qt Creator を使ってQt アプリを作成:」

「1. ソースとプロジェクトファイルがある場合:」

「2. ソースファイルだけがある場合:」

「3. どちらもイチから作成する場合:」

「まとめ へ」

「目次詳細 へ」

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - -

LXLE Linux 18.04.3 のデスクトップ画面:

→シンプルです。

-

「CuteMarkEd マークダウンエディタ」の画面:

メニュー →アクセサリ →「CuteMarkEd マークダウンエディタ」

→バージョンは「0.11.3」です。

  • Markdown の目次がリアルタイムに自動で作成されるのが便利。

→見出しや段落の階層を確認するのに便利です。

-

  • flatpak でのインストールでは、日本語入力とファイルに保存ができない不具合がありました。

→ビルドしてのインストールで解消できました。(今回の作業

-

-

システムの現在のバージョンを表示:

2021-06-15 現在

カーネル:

$ uname -r
4.15.0-144-generic  ←(注目)

→実績のある安定版のカーネルです。

最新のアプリは最新の共有ライブラリを使って開発されるのが普通です。 共有ライブラリはカーネルのバージョンと密接に関係しており、アプリのビルド時の条件になります。

カーネルのバージョンが低いので共有ライブラリのバージョンが制限されて、ほとんどのアプリが最新バージョンではないと思われます。

-

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.5 LTS"  ←(注目)

→一番下の行は「LXLE Linux 18.04.3 64bit」でした。更新により「Ubuntu 18.04.5 LTS」に書き換えられました。

-

  • Ubuntu 18.04.5 LTS」はポイントリリースと呼ばれます。アップデートを累積したイメージなので、 そのイメージを使うことでインストール後のアップデートの手間を省けます。

  • Ubuntu 18.04 LTS は5年のサポートなので、それまではLXLE もセキュリティやシステム更新の恩恵を受けられそう。

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --

-

LXLE について:

-

LXLE 公式:

The LXLE Desktop

-

-

  • 32ビットと 64ビットのOS バージョンが(今のところは)提供されています:

  • LTS ベースのディストリビューションの欠点の1つは、最新のアプリケーションが少ないことです。

  • 好みのアプリを入れるかは自由に選べます。

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ---

-

「LXLE Linux 18.04.3」のインストール

-

「前回の作業を参照:」

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----

-

「CuteMarkEd」をビルドしてインストール:

-

Markdown エディタの「CuteMarkEd」をflatpak でインストール してみました。「CuteMarkEd 0.11.3」

flatpak でインストールして起動できました。正常に動けば使えそうなアプリです。

残念ながらうまく動きませんでした。日本語は入力できず、ファイルの読み書きもできません。flatpak だけでの問題かはわかりません。

snap にはないので、ソースからビルドしてうまく動かないか、トライしてみました。

-

1). flatpak 上で検索:

$ flatpak search CuteMarkEd
Name       Description        Application ID              Version Branch Remotes
CuteMarkEd Qt Markdown Editor io.github.cloose.CuteMarkEd         stable flathub

-

2). 情報を表示:

$ flatpak info io.github.cloose.CuteMarkEd

CuteMarkEd - Qt Markdown Editor

          ID: io.github.cloose.CuteMarkEd
         Ref: app/io.github.cloose.CuteMarkEd/x86_64/stable
        Arch: x86_64
      Branch: stable
     License: GPL-2.0+
      Origin: flathub
  Collection: org.flathub.Stable
Installation: system
   Installed: 51.9 MB
     Runtime: org.kde.Platform/x86_64/5.9
         Sdk: org.kde.Sdk/x86_64/5.9

      Commit: 551a0e1c35036c0dec21828d76777b00b9e816678a8971359a52087492619739
      Parent: e31143c738c818087d8d3f3eee3be3a92d59892bae5cbbfe28693f306e5b0512
     Subject: Add ipc permission for X (d187e059)
        Date: 2018-08-28 22:43:32 +0000

-

3). バージョン表示:

$ flatpak run io.github.cloose.CuteMarkEd --version
:
CuteMarkEd 0.11.3

-

4). アプリが重複すると混乱するので削除

$ flatpak uninstall io.github.cloose.CuteMarkEd

        ID                                            Branch          Op
 1.     io.github.cloose.CuteMarkEd                   stable          r
 2.     org.freedesktop.Platform.VAAPI.Intel          1.6             r
 3.     org.kde.Platform.Locale                       5.9             r
 4.     org.kde.Platform                              5.9             r

Proceed with these changes to the system installation? [Y/n]:   ←(Enter)

-

5). 「io.github.cloose.CuteMarkEd」にてネット検索:

ホームページが見つかりました:

CuteMarkEd

説明:

Markdown エディタです。Qt アプリで、ライブHTMLプレビュー、数式、コード、マークダウンの構文の強調表示ができます。

-

画面右上にあるリンクボタン:

-

最新 Version 0.11.3

-

6). ソースをダウンロード:

GitHub にて、

緑色の「Code」ボタンをクリック→「Download ZIP」→「ファイルを保存する」

-

7). ソースを展開:

「CuteMarkEd-develop.zip」を右クリック→「ここでファイルを展開」

中身を確認:

$ ls ~/Downloads/CuteMarkEd-develop/
3rdparty    CuteMarkEd.wxs  README.md  app-static    fontawesomeicon  rpm
CuteMarkEd.pro  LICENSE.md  app    appveyor.yml  libs         test

→いつも見るソースと構成が違います。

CuteMarkEd.wxs

Windowsインストーラー開発プログラムであるWindows Installer XMLWiX)ツールセットによって作成されたソースファイル。

-

8). どうやってビルドするのかプロジェクトファイルを確認:

$ cd ~/Downloads/CuteMarkEd-develop/

$ cat CuteMarkEd.pro
#-------------------------------------------------
#
# Project created by QtCreator 2013-03-16T11:40:15
#
#-------------------------------------------------

TEMPLATE = subdirs

CONFIG += c++11

SUBDIRS = \
    3rdparty \
    libs \
    app-static \
    app \
    fontawesomeicon \
    test

# build order: 3rdparty -> libs -> app-static -> app & test
libs.depends = 3rdparty
app.depends = libs app-static
test.depends = libs app-static

→「QtCreator」によって作成されたプロジェクトファイルのようです。つまり、Qt アプリ。

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - -----

-

Qt5 のビルド環境をインストール:

-

参考:

Ubuntu18.04 LTSにQt5をインストールしよう!

  • Qt5 アプリがビルドできるように環境を整えました。

-

1). 現状を確認:

すでに、Qt5 アプリである「featherpad」をビルドしてインストール しており、 Qt5 をビルドできる環境は整っているはずです。 ただし、「CuteMarkEd」のビルドには、足りないパッケージがあるかもしれません。

-

(1). qmake が使えるか確認:
$ qmake --version
qmake: could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/qmake': No such file or directory

$ ls /usr/lib/x86_64-linux-gnu/qt4/bin/qmake
ls: '/usr/lib/x86_64-linux-gnu/qt4/bin/qmake' にアクセスできません: そのようなファイルやディレクトリはありません

$ ls /usr/lib/x86_64-linux-gnu/qt5/bin/qmake
/usr/lib/x86_64-linux-gnu/qt5/bin/qmake

$ /usr/lib/x86_64-linux-gnu/qt5/bin/qmake --version
QMake version 3.1
Using Qt version 5.9.5 in /usr/lib/x86_64-linux-gnu

→qt4 がデフォルト設定ですが、qt5 がインストールされています。 なので、qt5 の「qmeke」はパスを指定すれば使えます。

-

(2). make が使えるか確認:
$ make --version
GNU Make 4.1

→使えます。

-

2). システム更新:

$ sudo apt update
$ sudo apt upgrade

-

3). Qt5(ベースライブラリ)のインストール:

$ sudo apt install qtbase5-dev qttools5-dev-tools qt5-default
:
qttools5-dev-tools はすでに最新バージョン (5.9.5-0ubuntu1) です。
qtbase5-dev はすでに最新バージョン (5.9.5+dfsg-0ubuntu2.5) です。
以下のパッケージが新たにインストールされます:
  qt5-default

→「qt5-default」のインストールにより、qt5 がデフォルトに設定されました:

$ qmake --version
QMake version 3.1
Using Qt version 5.9.5 in /usr/lib/x86_64-linux-gnu

$ which qmake
/usr/bin/qmake

$ ls -l /usr/bin/qmake
lrwxrwxrwx 1 root root 9  5月 22 22:29 /usr/bin/qmake -> qtchooser

→「qtchooser」でqt5 がデフォルトに設定されました。パスの指定が要らなくなりました。

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- -

-

「CuteMarkEd」をビルドしてインストール

-

1). 依存する「libqt5webkit5-dev」パッケージをインストール

-

(1). パッケージが無いと、make で下記のエラーが発生しました:
$ make
:
Project ERROR: Unknown module(s) in QT: webkitwidgets
Makefile:99: recipe for target 'sub-app-static-make_first' failed
make: *** [sub-app-static-make_first] Error 3

-

(2). 検索:
$ apt search webkit | grep qt5
:
libqt5webkit5/bionic,now 5.212.0~alpha2-7ubuntu1 amd64
libqt5webkit5-dev/bionic,now 5.212.0~alpha2-7ubuntu1 amd64

$ apt search libqt5webkit5-dev
:
libqt5webkit5-dev/bionic,now 5.212.0~alpha2-7ubuntu1 amd64
  Web content engine library for Qt - development files

→Qt 用のWeb コンテンツエンジン ライブラリ(開発ファイル)

-

(3). インストール:
$ sudo apt install libqt5webkit5-dev
:
以下のパッケージが新たにインストールされます:
  libqt5quickparticles5 libqt5quicktest5 libqt5webkit5-dev
  qt5-qmltooling-plugins qtdeclarative5-dev

-

2). 依存する「libmarkdown2-dev」パッケージをインストール:

-

(1). パッケージが無いと、make で下記のエラーが発生しました:
$ make
:
converter/discountmarkdownconverter.cpp:38:10: fatal error: mkdio.h: そのようなファイルやディレクトリはありません
 #include <mkdio.h>
:

-

(2). 「github mkdio.h」をネットで検索

markdown.cpp - UVa CS's github.io site がヒット:

バージニア大学の「プログラムとデータの表現」の教材のリポジトリGithub uva-cs/pdr です。ここに含まれる「マークダウン→HTML 変換」のための「markdown.cpp」がhtml 保存されており、それがヒット(学生がどのPC でも見れるように、.md と.html の両方の資料が置かれています)。

-

説明からの抜粋(ヒント):

Ubuntu(2004年)でインストールされるデフォルトの markdown は、テーブルなどの最新のタグをサポートしていません。このプログラムは、これらのタグをサポートしている「libmarkdown」ライブラリを使用して、マークダウン変換を実行します。

これには、「libmarkdown2-dev」パッケージがUbuntu にインストールされている必要があります。

-

(3). 確認:
$ apt search libmarkdown2-dev
:
libmarkdown2-dev/bionic 2.2.3b8-2 amd64
  implementation of the Markdown markup language in C (dev files)

→C 言語でのマークダウンマークアップ言語の実装(開発ファイル)

-

(4). インストール:
$ sudo apt install libmarkdown2-dev
:
以下のパッケージが新たにインストールされます:
  libmarkdown2 libmarkdown2-dev

-

3). ソースにて、プロジェクトファイルの置かれている位置に移動:

$ cd ~/Downloads/CuteMarkEd-develop/
$ ls
3rdparty    CuteMarkEd.wxs  README.md  app-static    fontawesomeicon  rpm
CuteMarkEd.pro  LICENSE.md  app    appveyor.yml  libs         test

→「CuteMarkEd.pro」が大元のプロジェクトファイルで、 各フォルダごとにプロジェクトファイルは存在します。

-

4). プロジェクトファイルからQt のMakefile を作成(qmake):

$ qmake
:
Info: creating stash file /home/ubn/Downloads/CuteMarkEd-develop/.qmake.stash

$ ls -a
.       .gitmodules   CuteMarkEd.pro  README.md     fontawesomeicon
..      .qmake.stash  CuteMarkEd.wxs  app       libs
.gitattributes  .travis.yml   LICENSE.md      app-static    rpm
.gitignore  3rdparty      Makefile        appveyor.yml  test

→「.qmake.stash」と「Makefile」が作成されました。

-

5). ビルド(make):

$ cd ~/Downloads/CuteMarkEd-develop/
$ make
:
make[2]: ディレクトリ '/home/ubn/Downloads/CuteMarkEd-develop/test/integration' から出ます
make[1]: ディレクトリ '/home/ubn/Downloads/CuteMarkEd-develop/test' から出ます

確認:

$ ls
3rdparty    LICENSE.md  app       fontawesomeicon  test
CuteMarkEd.pro  Makefile    app-static    libs
CuteMarkEd.wxs  README.md   appveyor.yml  rpm

-

6). インストール(sudo make install):

$ cd ~/Downloads/CuteMarkEd-develop/
$ sudo make install
:
make[1]: ディレクトリ '/home/ubn/Downloads/CuteMarkEd-develop/app' に入ります
/usr/lib/qt5/bin/qmake -install qinstall -exe cutemarked /usr/bin/cutemarked
strip /usr/bin/cutemarked
/usr/lib/qt5/bin/qmake -install qinstall /home/ubn/Downloads/CuteMarkEd-develop/app/cutemarked.desktop /usr/share/applications/cutemarked.desktop
/usr/lib/qt5/bin/qmake -install qinstall /home/ubn/Downloads/CuteMarkEd-develop/app/icons/16x16/cutemarked.png /usr/share/icons/hicolor/16x16/apps/cutemarked.png
/usr/lib/qt5/bin/qmake -install qinstall /home/ubn/Downloads/CuteMarkEd-develop/app/icons/32x32/cutemarked.png /usr/share/icons/hicolor/32x32/apps/cutemarked.png
/usr/lib/qt5/bin/qmake -install qinstall /home/ubn/Downloads/CuteMarkEd-develop/app/icons/48x48/cutemarked.png /usr/share/icons/hicolor/48x48/apps/cutemarked.png
/usr/lib/qt5/bin/qmake -install qinstall /home/ubn/Downloads/CuteMarkEd-develop/app/icons/64x64/cutemarked.png /usr/share/icons/hicolor/64x64/apps/cutemarked.png
/usr/lib/qt5/bin/qmake -install qinstall /home/ubn/Downloads/CuteMarkEd-develop/app/icons/128x128/cutemarked.png /usr/share/icons/hicolor/128x128/apps/cutemarked.png
/usr/lib/qt5/bin/qmake -install qinstall /home/ubn/Downloads/CuteMarkEd-develop/app/icons/scalable/cutemarked.svg /usr/share/icons/hicolor/scalable/apps/cutemarked.svg
make[1]: ディレクトリ '/home/ubn/Downloads/CuteMarkEd-develop/app' から出ます
cd fontawesomeicon/ && ( test -e Makefile || /usr/lib/qt5/bin/qmake -o Makefile /home/ubn/Downloads/CuteMarkEd-develop/fontawesomeicon/fontawesomeicon.pro ) && make -f Makefile install
make[1]: ディレクトリ '/home/ubn/Downloads/CuteMarkEd-develop/fontawesomeicon' に入ります
/usr/lib/qt5/bin/qmake -install qinstall -exe libfontawesomeicon.so /usr/lib/x86_64-linux-gnu/qt5/plugins/iconengines/libfontawesomeicon.so
strip --strip-unneeded /usr/lib/x86_64-linux-gnu/qt5/plugins/iconengines/libfontawesomeicon.so
make[1]: ディレクトリ '/home/ubn/Downloads/CuteMarkEd-develop/fontawesomeicon' から出ます
:

→システムにバイナリ等が配置されました。

-

7). インストールされたかの確認:

$ which cutemarked
/usr/bin/cutemarked

$ cutemarked --version
CuteMarkEd 0.11.3

-

8). メニューの「CuteMarkEd」が未定義アイコンだったので修正:

$ sudo pluma /usr/share/applications/cutemarked.desktop

↓ 下記の行を追加と置換え

Name[ja]=CuteMarkEd マークダウンエディタ
Icon=/usr/share/icons/hicolor/scalable/apps/cutemarked.svg

-

9). 動作確認:

メニュー →アクセサリ →「CuteMarkEd マークダウンエディタ」

→起動できました。

ファイルの読み書きができました。日本語入力が可能です。

「flatpak」でのインストールではうまく動きませんでしたが、ビルドしてインストールすることで正常に動作しました。

-

10). 追記: flatpak の「CuteMarkEd」にて、ファイルの読み書きができるようになりました:

-

もしかしたらと思い、flatpak の「CuteMarkEd」をインストール:
$ flatpak install io.github.cloose.CuteMarkEd

→ファイルを開いたり、修正しての保存ができるようになりました。 メニューの設定は残してあったのでメニューから起動できました。

-

たぶん、追加でインストールしたパッケージが良い影響:
$ sudo apt install qtbase5-dev qttools5-dev-tools qt5-default
$ sudo apt install libqt5webkit5-dev
$ sudo apt install libmarkdown2-dev

→なので、人によってはうまく動く環境があるかも。

-

ただし、ファイルの履歴の表示はおかしいまま:

→実際のファイルではなく、一時的な「/run/user/1000/doc/…」になっています。

-

日本語オンにできないので日本語入力はできません。変化なし

もしかしたら、flatpak が生まれた環境であるfedora と同じ、GNOME デスクトップ環境にして「ibus-kkc」にすればいいけるかもしれませんが、こちらのPC はGNOME だと調子悪いのでやりません。

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- --

-

参考: Qt の「プロジェクトファイル」について

-

プロジェクトファイルの内容について:

$ cd ~/Downloads/CuteMarkEd-develop/

$ cat CuteMarkEd.pro
#-------------------------------------------------
#
# Project created by QtCreator 2013-03-16T11:40:15
#
#-------------------------------------------------

TEMPLATE = subdirs

CONFIG += c++11

SUBDIRS = \
    3rdparty \
    libs \
    app-static \
    app \
    fontawesomeicon \
    test

# build order: 3rdparty -> libs -> app-static -> app & test
libs.depends = 3rdparty
app.depends = libs app-static
test.depends = libs app-static

→「QtCreator」によって作成されたプロジェクトファイルです。 フォルダの依存関係が定義されていました。

-

「TEMPLATE」

→プロジェクトの種類を指定するQt の定義済みのマクロです。

-

「subdirs」

サブディレクトリにターゲットを構築するためのMakefile を作成します。 サブディレクトリは、SUBDIRS 変数を使用して指定されます。

この変数を使用して指定された各サブディレクトリには、独自のプロジェクトファイルが含まれている必要があります。

各サブディレクトリのプロジェクトファイルは、サブディレクトリ自体と同じベース名にすることで、ファイル名を省略できます。サブディレクトリの名前がmyapp とした場合、そのディレクトリ内にあるプロジェクトファイルの名前はmyapp.pro である必要があります。

-

「.depends」

このサブプロジェクトは、指定されたサブプロジェクトに依存します。

-

「CONFIG += c++11」

→「C++11」をQtCreator から使いたい場合の設定です。

-

参考:

proファイルの文法まとめ

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- ---

-

参考: 「Qt Creator」について

-

1). Qt とは:

→「GUIツールキット」として広く知られており、 Linuxで書いたプログラムを、WindowsMacでもビルドし直すだけで同じように動かすことができます。

-

2). 「QtCreator」とは:

  • 「QtCreator」とは、Qt のプログラム開発をするときに使われるIDE統合開発環境)のことです。

→Qt のプロジェクトの作成には、大きなプログラムになるほど必要なファイルの数が増えるので、IDE がないと大変です。

-

3). QtCreator で生成できるプロジェクト:

-

(1). アプリケーション:
  • Qt Widgets

→Qt GuiC++ウィジェットで拡張するためのクラス群

-

  • Qt Quick

→カスタムユーザーインターフェイスを備えた高度に動的なアプリケーションを構築するためのフレームワーク

-

  • Qt Console

→ちょっとしたコードを書いて、シェル(ipython)上でグラフを表示できるツール

-

(2). ライブラリ:

-

(3). 非Qt:

→cmake、qbs、qmake プロジェクト(C、C++)

-

(4). 外部プロジェクト

→各種バージョン管理システムリポジトリクローン

-

(5). その他:

→Qt ユニットテスト、subdirsqmake プロジェクト、空のプロジェクト

-

4). 「Qt Creator」を使ってプログラムを作成できます:

参考:

Qt Creatorを用いたプログラミング(1)「コンパイルと実行」

Qt をはじめよう! 第5回: Qt Creator を使ってみよう!

-

5). QtCreator のインストール:

$ sudo apt install qtcreator
:
以下のパッケージが新たにインストールされます:
  clang clang-6.0 gdb gdbserver lib32gcc1 lib32stdc++6 libbabeltrace1
  libbotan-2-4 libc6-dbg libc6-i386 libclang-common-6.0-dev libclang1-6.0
  libffi-dev libllvm6.0 libobjc-7-dev libomp-dev libomp5 libqbscore1.10
  libqbsqtprofilesetup1.10 libqt5xmlpatterns5 libtinfo-dev libtspi1 llvm-6.0
  llvm-6.0-dev llvm-6.0-runtime qbs-common qml-module-qtgraphicaleffects
  qml-module-qtqml-models2 qml-module-qtquick-controls
  qml-module-qtquick-layouts qml-module-qtquick-window2 qml-module-qtquick2
  qmlscene qt3d5-doc qt5-doc qtbase5-doc qtcharts5-doc qtconnectivity5-doc
  qtcreator qtcreator-data qtcreator-doc qtdeclarative5-dev-tools
  qtdeclarative5-doc qtgraphicaleffects5-doc qtlocation5-doc qtmultimedia5-doc
  qtquickcontrols2-5-doc qtquickcontrols5-doc qtscript5-doc qtsensors5-doc
  qtserialport5-doc qtsvg5-doc qttools5-doc qtwayland5-doc qtwebchannel5-doc
  qtwebengine5-doc qtwebkit5-doc qtwebkit5-examples-doc qtwebsockets5-doc
  qtwebview5-doc qtx11extras5-doc qtxmlpatterns5-dev-tools qtxmlpatterns5-doc

確認:

$ apt list qtcreator
:
qtcreator/bionic,now 4.5.2-3ubuntu2 amd64 [インストール済み]

-

6). バージョン確認:

$ qtcreator -version

(qtcreator:3802): dbind-WARNING **: 11:34:37.267: Couldn't register with accessibility bus: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.

Qt Creator 4.5.2 based on Qt 5.9.5

  Android 4.5.2 Support for deployment to and execution on Android Devices.
  AutoTest 4.5.2 Auto Test plugin.
  AutotoolsProjectManager 4.5.2 Autotools project integration.
  BareMetal 4.5.2 This plugin adds a target for bare metal development.
  Bazaar 4.5.2 Bazaar integration.
  Beautifier 4.5.2 Format source files with the help of beautifiers like AStyle, uncrustify or clang-format.
  BinEditor 4.5.2 Binary editor component.
  Bookmarks 4.5.2 Bookmarks in text editors.
  CMakeProjectManager 4.5.2 CMake support.
  CVS 4.5.2 CVS integration.
  ClangCodeModel 4.5.2 Clang Code Model plugin.
  ClangStaticAnalyzer 4.5.2 ClangStaticAnalyzer Plugin.
  ClassView 4.5.2 Class View component.
  ClearCase 4.5.2 ClearCase integration.
  CodePaster 4.5.2 Codepaster plugin for pushing/fetching diff from server.
  Core 4.5.2 The core plugin for the Qt IDE.
  CppEditor 4.5.2 C/C++ editor component.
  CppTools 4.5.2 Tools for analyzing C/C++ code.
  Debugger 4.5.2 Debugger integration.
  Designer 4.5.2 Qt Designer integration.
  DiffEditor 4.5.2 Diff editor component.
  EmacsKeys 4.5.2 The main idea behind this plugin is to provide additional actions a typical emacs user would expect. It doesn't claim to provide full emacs emulation. The following actions are available:
 - Movement [C-f, C-b, C-n, C-p, M-f, M-b, C-a, C-e, M-<, M->]
 - Mark-based selection [C-SPC, C-x C-x]
 - Cut/copy/yank (doesn't provide kill ring feature) [M-w, C-w, C-y]
 - Kill actions, which interact properly with clipboard [C-k, M-d, C-d]
 - Scrolling (half of the screen, keeps cursor visible) [C-v, M-v]
 - Insert new line and indent [C-j]

IMPORTANT: Actions are not bound to any key combinations by default. You can find them under 'EmacsKeys' section in keyboard shortcuts settings.

Also it's worth mentioning that EmacsKeys plugin forces disabling of menu mnemonics by calling Qt's qt_set_sequence_auto_mnemonic function with false argument. Many of the english menu mnemonics get into the way of typical emacs keys, this includes: Alt+F (File), Alt+B (Build), Alt+W (Window). It's a temporary solution, it remains until there is a better one.
  FakeVim 4.5.2 VI-style keyboard navigation.
  GLSLEditor 4.5.2 Editor for GLSL.
  GenericProjectManager 4.5.2 Generic support.
  Git 4.5.2 Git integration.
  Help 4.5.2 Help system.
  ImageViewer 4.5.2 Image Viewer component.
  Ios 4.5.2 Support for deployment to and execution on iOS Devices.
  Macros 4.5.2 Macros in text editors.
  Mercurial 4.5.2 Mercurial integration.
  ModelEditor 4.5.2 Graphical modeling with structured diagrams.
  Nim 4.5.2 Plugin for supporting the Nim programming language.
  Perforce 4.5.2 Perforce integration.
  ProjectExplorer 4.5.2 ProjectExplorer framework that can be extended with different kind of project types.
  PythonEditor 4.5.2 Editor and file creation wizards for Python. Example plugin for QtCreator API demonstration.
  QbsProjectManager 4.5.2 QBS support.
  QmakeAndroidSupport 4.5.2 Android support for qmake project manager.
  QmakeProjectManager 4.5.2 Provides project type for Qt/QMake .pro files and tools.
  QmlDesigner 4.5.2 Visual Designer for QML files.
  QmlJSEditor 4.5.2 Editor for QML and JavaScript.
  QmlJSTools 4.5.2 Tools for analyzing Qml/JS code.
  QmlProfiler 4.5.2 Qml Profiler Plugin.
  QmlProjectManager 4.5.2 Qt Quick support
  Qnx 4.5.2 Adds support for QNX to Qt Creator.
  QtSupport 4.5.2 Provides support code for build systems.
  RemoteLinux 4.5.2 Support for deployment to and execution on a remote Linux host.
  ResourceEditor 4.5.2 Editor for qrc files.
  ScxmlEditor 4.5.2 Visual Editor for SCXML (State Chart XML) files.
  SilverSearcher 4.5.2 Adds possibility to use SilverSearcher tool as an alternative mechanism of find in files
  Subversion 4.5.2 Subversion integration.
  TaskList 4.5.2 Use .tasks-files to populate the Issues view.
  TextEditor 4.5.2 Text editor framework and the implementation of the basic text editor.
  Todo 4.5.2 Adds pane that lists all TODO, FIXME, etc. entries in comments.
  UpdateInfo 4.5.2 Displays Update-Infos for Qt Installer Framework-based Updaters.
  Valgrind 4.5.2 Valgrind Plugin.
  VcsBase 4.5.2 Version Control System Base Plugin.
  Welcome 4.5.2 Secondary Welcome Screen Plugin.
  WinRt 4.5.2 Helper for Windows Runtime projects.

(C) 2018 The Qt Company Ltd

→「Qt Creator 4.5.2 based on Qt 5.9.5」となっていました。Qt Creator 4.5.2 というのはQt 4.5 用なのかと思ったらQt のバージョン名とは関係ないみたい。

-

コマンドは「qtcreator --version」でなく「qtcreator -version」であることに注意。

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- ----

-

参考: 「Qt Creator」を使わずにQt アプリを作成してみます

-

参考:

Qtによるhello world

1). 事前にテスト用のフォルダ「~/Qt-Test/」を作成

$ cd
$ mkdir Qt-Test

$ cd ~/Qt-Test/

-

2). アプリのHello2 フォルダを作成

$ cd ~/Qt-Test/
$ mkdir Hello2

-

3). Hello2 フォルダにQt プログラム「Hello2.cpp」を保存

$ cd ~/Qt-Test/Hello2/
$ pluma Hello2.cpp

↓ 以下を入力

#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QLabel label("Hello, world!");
    label.show();
    return app.exec();
}

→サンプルはQt5 でエラーが出ないように修正しています。

-

4). ビルドに使うツールを確認:

$ qmake --version
QMake version 3.1
Using Qt version 5.9.5 in /usr/lib/x86_64-linux-gnu

$ make --version
GNU Make 4.1
:

-

5). Hello2 フォルダでプロジェクトファイルを作成

$ cd ~/Qt-Test/Hello2/
$ ls
Hello2.cpp

$ qmake -project
$ ls
Hello2.cpp  Hello2.pro

-

6). プロジェクトファイルの内容を確認

$ cat Hello2.pro

######################################################################
# Automatically generated by qmake (3.1) Mon Jun 14 16:23:48 2021
######################################################################

TEMPLATE = app
TARGET = Hello2
INCLUDEPATH += .

# The following define makes your compiler warn you if you use any
# feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

# Input
SOURCES += Hello2.cpp

→ソースファイルがひとつだけの場合のプロジェクトファイル

(追記: 修正が必要でした。このままだとエラーします)

-

7). qmake:「Makefile」の作成

$ cd ~/Qt-Test/Hello2/

$ qmake
Info: creating stash file /home/ubn/Downloads/qt-test/Hello2/.qmake.stash

結果の確認:

$ ls -a
.  ..  .qmake.stash  Hello2.cpp  Hello2.pro  Makefile

→「.qmake.stash」と「Makefile」が作成されました。

-

Makefile の確認:
$ cat Makefile

→簡単なプログラムですがびっくりするくらい大きなファイルです。

-

8). make: ビルド(Makefile の実行)

$ cd ~/Qt-Test/Hello2/

$ make
:
Hello2.cpp:1:10: fatal error: QApplication: そのようなファイルやディレクトリはありません
 #include <QApplication>
:

→エラーしました。このサンプルはあまり良いサンプルではなかったみたい。

-

9). エラーの対応で、プロジェクトファイルを修正

$ cd ~/Qt-Test/Hello2/

$ rm Hello2.pro
$ rm Makefile
$ rm .qmake.stash
$ qmake -project

$ pluma Hello2.pro

↓ 最終行を追記:

# Input
SOURCES += hello.cpp
QT += widgets   ←(追記)

-

10). qmake:「Makefile」の作成

$ cd ~/Qt-Test/Hello2/

$ qmake
Info: creating stash file /home/ubn/Downloads/qt-test/Hello2/.qmake.stash

-

11). make: ビルド(Makefile の実行)

$ cd ~/Qt-Test/Hello2/

$ make

→エラーがないこと。

-

12). 結果の確認:
$ ls -la
:
drwxrwxr-x 2 ubn ubn  4096  6月 14 18:10 .
drwxrwxr-x 5 ubn ubn  4096  6月 14 16:22 ..
-rw-rw-r-- 1 ubn ubn   739  6月 14 18:10 .qmake.stash
-rwxrwxr-x 1 ubn ubn 13384  6月 14 18:10 Hello2   ←(実行ファイル)
-rw-rw-r-- 1 ubn ubn   191  6月 14 17:34 Hello2.cpp
-rw-rw-r-- 1 ubn ubn  4192  6月 14 18:10 Hello2.o
-rw-rw-r-- 1 ubn ubn   929  6月 14 18:08 Hello2.pro
-rw-rw-r-- 1 ubn ubn 21314  6月 14 18:10 Makefile

-

13). 実行

$ cd ~/Qt-Test/Hello2/
./Hello2

→かわいいウィンドウが開きました。タイトルは「Hello2」で、ウィンドウ内に「Hello, world!」が表示されています。

-

14). 次の作業の準備(ソースとプロジェクトファイルを残しました)

$ cd ~/Qt-Test/Hello2/
$ rm Hello2
$ rm Hello2.o
$ rm Hello2.pro
$ rm Makefile
$ rm .qmake.stash

$ ls
Hello2.pro  hello2.cpp

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- -----

-

参考: 「Qt Creator」を使ってQt アプリを管理

-


1. ソース、プロジェクトファイルともに作成されている場合:「Hello2.cpp」、「hello.pro」

$ ls ~/Qt-Test/
Hello2

$ ls ~/Qt-Test/Hello2/
Hello2.pro  hello2.cpp
  • 作成済みのQt アプリ「Hello2」を「Qt Creator」に登録して、ビルドできるようにしました。

-

1). 「Qt Creator」を起動

メニュー →プログラミング →「Qt Creator」→「Qt Creator」が起動

-

2). プロジェクトを読み込ませます: 「hello.pro」

ファイル →「ファイル/プロジェクトを開く」

「/home/ubn/Qt-Test/Hello2/Hello2.pro」を選択

-

「Configure Project」画面が表示

「デスクトップ」にチェックがあることを確認

→右下の「Configure Project」ボタンをクリック

$ ls ~/Qt-Test/
Hello2

$ ls ~/Qt-Test/Hello2/
Hello2.pro  Hello2.pro.user  hello2.cpp

→フォルダ内に「Qt Creator」でプロジェクトを管理するための「Hello2.pro.user」が作成されました。

-

3). プロジェクトの編集画面が開きました

何もファイルが開いていないプロジェクトの画面になりました。

左上の「Hello2」をクリックするとツリーを開けます。

→Hello2.pro →ダブルクリックすると右側に編集画面が開き、編集できます。

その下の「Sources」をクリックしてツリーを開きます。

→Hello2.cpp →ダブルクリックすると右側に編集画面が開き、編集できます。

-

左下の「開いているドキュメント」

Hello2.cpp
Hello2.pro

-

4). ビルドおよび実行

左下の緑色の三角(実行)ボタンをクリック

→デスクトップ上に、かわいいウィンドウが開きました。

$ ls ~/Qt-Test/
Hello2  build-Hello2-unknown-Debug

$ ls ~/Qt-Test/Hello2/
Hello2.pro  Hello2.pro.user  hello2.cpp

$ ls -a ~/Qt-Test/build-Hello2-unknown-Debug/
.  ..  .qmake.stash  Hello2  Makefile  hello2.o

→上位のフォルダに、ビルドの結果が入る「build-Hello2-unknown-Debug」フォルダが作成されました。

この中にqmeke の結果と、make の結果が入っており、その中の「Hello2」が実行されました。

  • 別フォルダとして作成されるので、ソースのあるフォルダを汚しません。

-


2. ソースファイルだけが作成されている場合:「Hello2.cpp」

$ ls ~/Qt-Test/
Hello2

$ ls ~/Qt-Test/Hello2/
hello2.cpp

-

1). 「Qt Creator」を起動

メニュー →プログラミング →「Qt Creator」→「Qt Creator」が起動

-

2). ソースファイルを読み込ませます: 「Hello2.cpp」

ファイル →「ファイル/プロジェクトを開く」

「/home/ubn/Qt-Test/Hello2/Hello2.cpp」を選択

-

3). プロジェクトの編集画面が開きました

「Hello2.cpp」だけが開いた編集画面になりました。

-

左下の「開いているドキュメント」

Hello2.cpp

-

4). プロジェクトファイルの作成

-

(1). 左上のツリー表示がないところで、右クリック→「新しいプロジェクト」

-

(2). テンプレートを選択してください:

「他のプロジェクト」タブ→「空の qmake プロジェクト」

→「選択…」

-

(3). プロジェクトパス:

パス: 「/home/ubn」→「/home/ubn/Qt-Test/」に変更

名前: 「無題」→「Hello2」に変更

→黄色で、「プロジェクトは既に存在しています」表示

「プロジェクトの規定のパスとして使用する」にチェックしない

→「次へ」

-

(4). キットの選択:

「すべてのキットを選択」にチェック(デフォルト)

「デスクトップ」にチェック(デフォルト)

→「次へ」

-

(5). プロジェクト管理:

サブプロジェクトとしてプロジェクトに追加: 空白(デフォルト)

バージョン管理システムに追加: なし(デフォルト)

-

左下の表示:

/home/ubn/Qt-Test/Hello2:

Hello2.pro

-

→「完了」

-

(6). ツリー表示は「Hello2」プロジェクトだけで、ソースファイルがありません

「Hello2」を右クリック→「既存のファイルを追加」

「/home/ubn/Qt-Test/Hello2/Hello2.cpp」を選択

→「開く」

-

(7). 左上の「Hello2」に「Sources」が追加されました

「Sources」をクリック→「hell2.cpp」が表示されました。

-


3. ソース、プロジェクトファイルともになく、イチから作成する場合:

$ ls ~/Qt-Test/
$

-

1). 「Qt Creator」を起動

メニュー →プログラミング →「Qt Creator」→「Qt Creator」が起動

-

2). プロジェクトの作成: 「hello.pro」

ファイル →「ファイル/プロジェクトの新規作成」

-

(1). テンプレートを選択してください:

「他のプロジェクト」タブ→「空の qmake プロジェクト」→「選択…」

-

(2). プロジェクトパス:

パス: 「/home/ubn」→「/home/ubn/Qt-Test」に変更(Qt-Test/ を選んで、開く )

名前: 「無題」→「Hello2」に変更(フォルダ名になります)

「プロジェクトの規定のパスとして使用する」にチェック

→「次へ」

-

(3). キットの選択:

「すべてのキットを選択」にチェック(デフォルト)

「デスクトップ」にチェック(デフォルト)

→「次へ」

-

(4). プロジェクト管理:

サブプロジェクトとしてプロジェクトに追加: 空白(デフォルト)

バージョン管理システムに追加: なし(デフォルト)

-

↓ 左下に表示あり

ファイルの追加先

/home/ubn/Qt-Test/Hello2:

Hello2.pro

→「完了」

-

→「編集」タブに切り替わりました。

-

(5). ツリー表示がプロジェクトのみです

「Hello2」クリックで「Hello2.pro」が表示されました。

-

3). ソースファイルを追加: 「Hello2.cpp」

左側の「Hello2」プロジェクトを右クリック→「新しいファイルを追加…」

-

(1). テンプレートを選択してください:

C++」タブ→「C++ ソースファイル」

サポートプラットフォーム: デスクトップ

→「選択…」

-

(2). パス

名前: 空白→「Hello2」に変更(ソースファイル名になります)

パス: /home/ubn/Qt-Test/Hello2(デフォルト)

→「次へ」

-

(3). プロジェクト管理:

プロジェクトに追加: Hello2.pro(デフォルト)

バージョン管理システムに追加: なし(デフォルト)

-

↓ 左下に表示あり

ファイルの追加先

/home/ubn/Qt-Test/Hello2:

hello2.cpp    ←(小文字になってしまいます)

→「完了」

-

(4). 左上の「Hello2」に「Sources」が追加されました

「Sources」をクリック→「hell2.cpp」が表示されました。

-

(5). 「hell2.cpp」をダブルクリック

左に「hell2.cpp」の編集画面が開きます。

空白なので、下記のプログラムを貼り付けます:

#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QLabel label("Hello, world!");
    label.show();
    return app.exec();
}

Ctrl+S にて、ファイルを保存。

タイトルの「hell2.cpp*」が「hell2.cpp」に変わるので保存されたことがわかります。

-

(6). ちなみに、「Hell2.pro」をダブルクリックすると、
SOURCES += \
    hello2.cpp

→記述が足りないので、ビルドのときにエラーするはずです。

-

(7). 左下の「開いているドキュメント」
hello2.cpp    ←(Hello2.cpp にしたつもりでも、小文字になってしまいます)
Hello2.pro

-

4). ビルドおよび実行

左下の緑色の三角(実行)ボタンをクリック

→うまく行けば、デスクトップ上に、かわいいウィンドウが開きます。

-

5). 右下に「問題」タブが表示されました。(コンパイルエラー)

赤い「!」「QApplication: そのようなファイルやディレクトリはありません」

→右上の編集画面にて、問題行にも、赤い「!」が付くのでどこがおかしいのかがわかります。

-

(1). 詳細の表示は:

「QApplication: そのようなファイルやディレクトリはありません」をクリック

QApplication: そのようなファイルやディレクトリはありません
 #include <QApplication>
               ^~~~~~~~~~~~
/home/ubn/Qt-Test/Hello2/hello2.cpp

-

(2). ヒントの表示:

「QApplication: そのようなファイルやディレクトリはありません」を右クリック→「オンラインからヘルプを習得」

→「QApplication: そのようなファイルやディレクトリはありません」を検索キーにしてブラウザで表示

ヒット:

[覚書]QT5でqmakeしてmakeしたら「致命的エラー…

→「.proファイルの最終行に”QT += widgets “を付け足す」と良いみたい。

  • これだと、必ずヒントがもらえるとは限らない…。検索キーを変えてトライの繰り返しが必要。

-

(3). 左上のツリーで「Hello2.pro」ファイルをダブルクリックして編集

下記の行を最終行に追記:

QT += widgets

Ctrl+S にて、ファイルを保存。

-

確認:

SOURCES += \
    hello2.cpp
QT += widgets

-

6). ビルドおよび実行

左下の緑色の三角(実行)ボタンをクリック

→うまく行きました。デスクトップ上に、かわいいウィンドウが開きました。

→「core」は入れても入れなくてもOK。まさかプロジェクトファイルが影響するとは思いませんよね。

-

7). 「Qt Creator」の利点

-

ビルド後のファイルを確認:
$ ls ~/Qt-Test/
Hello2  build-Hello2-unknown-Debug

$ ls ~/Qt-Test/Hello2/
Hello2.pro  Hello2.pro.user  hello2.cpp

$ ls -a ~/Qt-Test/build-Hello2-unknown-Debug/
.  ..  .qmake.stash  Hello2  Makefile  hello2.o

→上位のフォルダに、ビルドの結果が入る「build-Hello2-unknown-Debug」フォルダが作成されました。

この中にqmeke の結果と、make の結果が入っており、その中の「Hello2」が実行されました。

-

  • ビルドのとき、別フォルダとして作成されるので、ソースの入ったフォルダを汚しません。

  • 「build-Hello2-unknown-Debug」フォルダを削除するだけなので、リトライも簡単。

  • 端末からビルドするよりも、エラーが出るまでが速いみたい。デバッグには有利。

  • 本格的なアプリだと扱うファイル数が増えて全体を把握しづらくなります。これがないときびしいかも。

  • テンプレートの選択画面では、メニューのアイコンが良くできており、どのようなファイルが生成されるのかがわかりやすいです。

  • エラー時のヒントは、それなりなので、あまり期待できません。色々と検索キーを変えてネット検索するしかなさそう。

  • ビルドできるまでは「Qt Creator」を使って、本番は端末からコマンドの方が --prefix とか融通が効きそう。

-


4. 参考: その他のサンプルプログラム

色々と試してみると、勉強になります。

-

1). C 言語のサンプルプログラム

#include <stdio.h>

int main()
{
  printf("Hello, World!\n");  // メッセージの表示
  return 0;
}

-

2). ウィンドウ枠だけを表示するプログラム

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

→似たようなプログラムです。 タイトルが「Main Window」のウィンドウが表示されますが、 文字は何も表示されません。

ウィンドウの右上の「x」で閉じます。

-

-


まとめ

LXLE Linux には軽さ優先のアプリが入っていますが、それらにとらわれず、自分にとって使いやすいアプリをインストールすれば良いと思います。アプリを入手しやすいのがUbuntu ベースの利点です。

自分の欲しいアプリを入手するとき、ソースからビルドするやり方があります。 依存関係を調べるのがたいへんなので、最終手段だと思いますが、うまく行けばラッキーです。 トライするごとにスキルアップできますが挫折もあります。

しばらく時間を置いてトライするとうまく行ったりします。(今回の場合)

-

-

-


-

-

-

    目次

-

「投稿の先頭 へ」

-

-


-

「この目次 の先頭へ」

「本編の目次 に戻る」

-

-

画像のテスト:

-