登録日: 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 のデスクトップ画面:
→シンプルです。
-
「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 公式:
-
- LXLE は、古いPC の再生を目的とする、Ubuntu LTS ベースでLXDE デスクトップ環境のディストリビューションです。
-
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」にてネット検索:
ホームページが見つかりました:
説明:
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 XML(WiX)ツールセットによって作成されたソースファイル。
-
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 から使いたい場合の設定です。
-
参考:
-
-
--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- ---
-
参考: 「Qt Creator」について
-
1). Qt とは:
- Qt (キュート) とは、クロスプラットフォームのアプリのGUI フレームワークです。
→「GUIツールキット」として広く知られており、 Linuxで書いたプログラムを、WindowsやMacでもビルドし直すだけで同じように動かすことができます。
-
2). 「QtCreator」とは:
→Qt のプロジェクトの作成には、大きなプログラムになるほど必要なファイルの数が増えるので、IDE がないと大変です。
対応言語: C++、QML、JavaScript
-
3). QtCreator で生成できるプロジェクト:
-
(1). アプリケーション:
- Qt Widgets
-
- 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 アプリを作成してみます
-
参考:
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). テンプレートを選択してください:
サポートプラットフォーム: デスクトップ
→「選択…」
-
(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 ベースの利点です。
自分の欲しいアプリを入手するとき、ソースからビルドするやり方があります。 依存関係を調べるのがたいへんなので、最終手段だと思いますが、うまく行けばラッキーです。 トライするごとにスキルアップできますが挫折もあります。
しばらく時間を置いてトライするとうまく行ったりします。(今回の場合)
-
-
-
-
-
-
目次
-
-
- 目次
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - -
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --
- LXLE について:
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ---
- 「LXLE Linux 18.04.3」のインストール
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----
- 「CuteMarkEd」をビルドしてインストール:
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - -----
- Qt5 のビルド環境をインストール:
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- -
- 「CuteMarkEd」をビルドしてインストール
- 1). 依存する「libqt5webkit5-dev」パッケージをインストール
- 2). 依存する「libmarkdown2-dev」パッケージをインストール:
- 3). ソースにて、プロジェクトファイルの置かれている位置に移動:
- 4). プロジェクトファイルからQt のMakefile を作成(qmake):
- 5). ビルド(make):
- 6). インストール(sudo make install):
- 7). インストールされたかの確認:
- 8). メニューの「CuteMarkEd」が未定義アイコンだったので修正:
- 9). 動作確認:
- 10). 追記: flatpak の「CuteMarkEd」にて、ファイルの読み書きができるようになりました:
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- --
- 参考: Qt の「プロジェクトファイル」について
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- ---
- 参考: 「Qt Creator」について
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- ----
- 参考: 「Qt Creator」を使わずにQt アプリを作成してみます
- 1). 事前にテスト用のフォルダ「~/Qt-Test/」を作成
- 2). アプリのHello2 フォルダを作成
- 3). Hello2 フォルダにQt プログラム「Hello2.cpp」を保存
- 4). ビルドに使うツールを確認:
- 5). Hello2 フォルダでプロジェクトファイルを作成
- 6). プロジェクトファイルの内容を確認
- 7). qmake:「Makefile」の作成
- 8). make: ビルド(Makefile の実行)
- 9). エラーの対応で、プロジェクトファイルを修正
- 10). qmake:「Makefile」の作成
- 11). make: ビルド(Makefile の実行)
- 13). 実行
- 14). 次の作業の準備(ソースとプロジェクトファイルを残しました)
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- -----
- 参考: 「Qt Creator」を使ってQt アプリを管理
- 1. ソース、プロジェクトファイルともに作成されている場合:「Hello2.cpp」、「hello.pro」
- 2. ソースファイルだけが作成されている場合:「Hello2.cpp」
- 3. ソース、プロジェクトファイルともになく、イチから作成する場合:
- 4. 参考: その他のサンプルプログラム
- まとめ
- -
-
-
-
-
画像のテスト:
-