2018年9月22日土曜日

小型工作機CNC2418 その63(CandleソースとQt Build)

CNC2418のGRBL Senderソフトには、Candleを愛用しています。
bCNCを試したのですが、Python上で動くからなのか
マーティーのCore i3機では、追従が遅かったり、フリーズするのです。

元々、CNC2418に付属しているGrblcontrol.exe=Candle.exeなのです。
最初は、GRBL v0.9jだったので、Candle v1.0.11 を
その後、GRBL v1.1fにして、Candle v1.1.7 を愛用しています。

Candleは、QtでCompileされていることは、分かっていたのですが、
そもそもCompile、Build、Makeの意味もよくわからない状態で
「ソースをちょっとイジって実行形式にできたら
 Candleを改造できて面白いことできないかな~」
という思いから始めたのであります。

Qtの開発環境のインストール手順は、これを見ていました。
「Qtの前にコンパイラとデバッガを先にインストールしておくと
 Qtのキットに自動的に設定してくれる」
とあるので、準備として、苦労してこれらを集めておりました。
が、そうこうしている内にWindows10がVer.1803になってしまい
訳がわからなくなって(特に上の2)、半ば諦めていたのです(-_-;)

とある時、救世主YY氏より、ソースのビルド手順を伝授いただき
一気にできるようになったのです。
ありがとうございますm(_ _)m

例によって、色々とハマってしまって長くなっております(-_-;)
ややこしくなったので、最後に<まとめ>しています。

まずは、
Candleのソースを探すと、3ヶ所に存在することがわかりました。
どうして「2」の日付が一番新しいのか謎です。

1.ここの「Candle-1.1.zip」
 candle.pro 内に「VERSION = 1.1」とある
 candle.proのTimeStamp:2016/11/20 8:48:34

2.ここの「Candle-master.zip」
 candle.pro 内に「VERSION = 1.0.12」とある
 candle.proのTimeStamp:2017/09/28 7:44:34
(これが、Ver.1.0系の最新だと思われます)

3.ここの「Candle-grbl_1_1.zip」
candle.pro 内に「VERSION = 1.1.8」とある
 candle.proのTimeStamp:2017/05/08 11:59:02
結局、これがVer.1.1系の最新のようです

では、ダウンロードしていきます。
<1.>
ここには、Ver.1.1以下、歴代のVersionが揃っています。
ソースもあるのでダウンロードします。
「Candle-1.1.zip」のファイル名です。
解凍して[src]フォルダの「candle.pro」を見ると
TimeStampは、2016/11/20 8:48:34
*****
# Project created by QtCreator 2014-05-23T17:51:21
~~~
TARGET = Candle
TEMPLATE = app
VERSION = 1.1
RC_ICONS += images/candle.ico
*****

<2.>
ここには、Ver.1.1.7だけが置いてあります。
上の右の[Clone or download]をクリックして
[Download ZIP]すると
「Candle-master.zip」のファイル名でダウンロードできます。
この「Candle-master.zip」を解凍して
「candle.pro」を見ると
作成日時は、2017/09/28 7:44:34
*****
# Project created by QtCreator 2014-05-23T17:51:21
~~~
TARGET = Candle
TEMPLATE = app
VERSION = 1.0.12
RC_ICONS += images/candle.ico
*****
作成日は、最初のより新しいのにVer.1.0.12 と古いのです。
このサイトには、Ver.1.1のことしか載っていないのに
なぜVer.1.0が置いてあるのか、気になります。
Ver.1.0系の実行形式の公式最新版、Ver.1.0.11の最新ソースなのでしょう。

<3.>
2のサイトからで、
プルダウンメニューで[master]⇒[grbl_1_1]を選択すると
画面が変わって(見た目はほとんど変わりません)ここに移動します。
ここで、右側の[Clone or download]ボタンで
[Download ZIP]すると
「Candle-grbl_1_1.zip」がダウンロードできます。
これを解凍して
ソースの「candle.pro」を見ると
作成日時は、2017/05/08 11:59:02
日付は、2番目に新しいことになります。
*****
# Project created by QtCreator 2014-05-23T17:51:21
~~~
TARGET = Candle
TEMPLATE = app
VERSION = 1.1.8
RC_ICONS += images/candle.ico
***
実行形式の公式最新版は、Ver.1.1.7なのに
ソースは、Ver.1.1.8なのです。

ただ、このサイトには、なぜか
「Version 1.0 pre-release:」の文字が一番上の項目にあり、
Ver.1.1のことは、書いてないのです。
どうみても、2と3で保管場所が逆ではないかと思います。

ソースが揃ったので、Qtのインストールに行きます。
YY氏から教えていただいこのサイトには、
何と1発インストールパッケージがあるということなのです。

Windows版は、32bit版だけのようです。
一番上の「qt-unified-windows-x86-3.0.5-online.exe」を
ダウンロードします。
「qt-unified-windows-x86-3.0.5-online.exe」を実行してInstallします。
所が、30分以上もかかってInstallしたのに
Qt Creatorが、起動しません。
qtcreator.exeが見つからないというのです。
これは、アンチウィルスソフトが怪しいですね~
マーティーは、Avast Free版を使っていますが、その隔離場所を見ると
「qt-unified-windows-x86-3.0.5-online.exe」が隔離されています。
実行はできたのに、いつの間に隔離されたんだろう?
復元を試みましたが
できません。
そういえば、Install中に「応答なし」が何度がでていましたが
その時にAvastが邪魔をしていたのだと思われます。
仕方ないので、一旦、Uninstallします。
そこでもエラー(´-﹏-`;)
AvastがInstall中にかなりのファイルを除外していたようです。
全て[無視]します。
アンインストールは、無事終わりました。
Installフォルダ「C:\Qt」も消えています。
Avastを1時間無効にします。
再度「qt-unified-windows-x86-3.0.5-online.exe」をダウンロードして実行!
まず、これがでて[Next]
ここは、[Skip]
1/3...2/3..3/3と進みます。
ようやくこれが出るので[次へ]
ここで[Qt]の所を展開します。
下の方にスクロールします。
インストールするバージョンは、
Ver.1.1について載っているmasterのサイトには、
Qt 5.4.2 with MinGW/GCC compiler」とあるので
下の方にスクロールしていって
[Qt 5.4]を展開すると、これがでてくるので
[MinGW 4.9.1(32 bit) OpenGL]にチェックを入れます。
更に下の方に行くと[Tools]があります。
展開するとこうなっていますが、ここは、デフォルトのままにしました。
[次へ]します。
「I agree...」にチェックして[次へ]
[次へ]
[インストール]クリックすると
最初にダウンロードが始まります。
約5分でダウンロード完了し、インストールが始まります。

これも5分弱でインストール完了したかな?
[次へ]して
[完了]すると
Qt Creatorが起動しました!
数秒後に、この画面になります。
ちなみに、インストール完了すると
「最近追加されたもの」は、こうなっています。
Qt Creatorからプロジェクトを開きます。
Ver.1.1.8である「Candle-grbl_1_1.zip」を解凍して
[Candle-grbl_1_1]の[src]フォルダ内の
「candle.pro」ファイルを開きます。
右下に小さいバーがチョコチョコと出て
この画面になります。
「Desktop Qt 5.4.2 MinGW 32bit」(赤枠部)になっています。
最初のLOAD時は、左下は、
上の画面で右側の[Configure Project]ボタンを押します。
この画面に変わって、右下でゴソゴソとバーが走り
左下は、こうなります。
右下の動きが落ち着いたら
[ビルド]-[実行]します。
3分程かかって左下のバーが徐々に進んでいき
Qt Creatorの上にCandleが起動しました!
このCandleは、Version 1.1.8になっています。
が、下の箱にライセンス要綱があるハズが、空白です。
なぜなんだろう?
ちなみに Ver.1.1.7で[Help]-[About]すると
こうなんです。
このビルドされたCandleは、ソースのフォルダ配下に
[build-candle-Desktop_Qt_5_4_2_MinGW_32bit-Debug]フォルダができ
その配下の[debug]フォルダ内に
「Candle.exe」ができています。
しかし、
「Candle.exe」を直接実行しても何も起動しないのです。
現状動作しているVer.1.1.7のフォルダと比べると
上のには、***.dllがありません。
調べていくと、
自動で必要なDLLファイルを集めることを「DEPLOY」と呼ぶようです。
その「デプロイ」をして、Standaloneで起動できるようにする手順は、
この「Qt Creatorを用いた自動deploy方法 (Windows 編) [Qt]」
参考させていただきましたm(_ _)m

まず、Qt Creatorで左側の[プロジェクト]ボタンを押すと
この画面になります。
ビルドステップの所の[Buildステップを追加]のプルダウンメニューで
[独自プロセスステップ]を選択すると
 赤枠の様に欄が追加されます。
参考にしたサイトには、
***
コマンド : C:\Qt\5.9.1\tool\deploy.bat
引数 : %{CurrentBuild:Name} %{CurrentProject:Name}
作業ディレクトリ : %{buildDir}
(※コマンドは任意のパスです)
***
とあります。
が、
「deploy.bat」は、「windeployqt.exe」が存在するフォルダに作る必要があります。
マーティーの環境では、「windeployqt.exe」が存在するフォルダは、
「C:\Qt\5.4\mingw491_32\bin\」なので
***
コマンド : C:\Qt\5.4\mingw491_32\bin\deploy.bat
引数 : %{CurrentBuild:Name} %{CurrentProject:Name}
作業ディレクトリ : %{buildDir}
***
下の2つは、参考サイトと同じ設定です。
Qt Creatorの[独自プロセスステップ]に入力します。
そして、コマンド欄のフォルダに
テキストドキュメント「deploy.bat」を新規作成し
テキストエディタで「deploy.bat」ファイルの中身を次のにします。
***
if "%1"=="デバッグ" (
set BUILD_MODE=debug
) else (
set BUILD_MODE=release
)

if not exist deploy\nul (

mkdir deploy
)

xcopy /C /Y %BUILD_MODE%\*.exe deploy\

windeployqt --%BUILD_MODE% deploy %BUILD_MODE%\%2.exe
***
[ビルド]-[実行]します。
ビルドが進んでいき
終わるとCandleが起動します。
最初にできた、ソースのフォルダ配下の
[build-candle-Desktop_Qt_5_4_2_MinGW_32bit-Debug]フォルダに
[deploy]フォルダができています。
そこにStandaloneで動作するCandle一式ができています。
このdeployフォルダを丸ごとコピーすれば、どこに置いても動作します。
後で気づくに、
「settings.ini」「LICENSE」をVer.1.1.7からコピペする必要があります。
Ver.1.1.7のと比べると
ちょっと違うな~
上の***.qmは、「translations」フォルダにありますが
上のには、d3dcompiler_47.dllがないのと
***54.dll と ***53.dll が異なる...
気になるなあ~
ここを「リリース」にして、上記と同様に「デプロイ」しても
生成されるフォルダ名の末尾が「release」に変わるだけで中身は同じです。
[ビルド]-[プロジェクト "candle"をクリーン]をやってみても
「debug」や「release」フォルダの中だけファイルが消されて
「candle.exe」と「settings.ini」になるだけで
「deploy」フォルダの中身には変化ありません。
そういえば、そもそも、
このVer1.1.8である「Candle-grbl_1_1.zip」があったサイトには、
Version 1.0 pre-releaseの話みたいですが
「Qt 5.7.0 with MinGW compiler」とあります。
で、「Qt 5.7.0」を追加することにします。
この「Uninstall Qt」でコンポーネントの追加ができます。
Installと同じ様に進みますが
ここで、「コンポーネントの追加または削除」にチェックします。
この先もInstallの時と同じ様に進み
ここで[Qt]を展開して
[Qt 5.7]を展開して
[MinGW 5.3.0 32bit]にチェックを入れます。
更に下の方に行って
[Tools]を展開して、ちょっと気になることを確かめたいので
[Qt 3D Studio 2.0.0]と[Qt 3D Studio 2.0.0 Runtime 2.0.0]にチェック!
後で分かるに、これは無くても変化なしでした。
結構な時間がかかって「アップデートが完了しました」になり
これがでるので[完了]します。
[再起動]は、Windowsの事ではなく、Qtメンテナンスの再起動のことです。
こんなに増えました!
Qt Creator 4.7.0(community)を起動します。
特に画面は変わりません。

Ver1.1.8である「Candle-grbl_1_1.zip」の「candle.pro」を
LOADして、Ver.1.1.8もQt 5.7.0でやってみます。
プロジェクトに行って
「Desktop Qt 5.4.2 MinGW 32bit」の前ののアイコンをクリックすると
[Desktop Qt 5.7.1 MinGW 32bit]が出現します。
その所をBuildをクリックして
[Buildステップを追加]で[独自プロセスステップ]します。
次の様に入力します。
***
コマンド : C:\Qt\5.7\mingw53_32\bin\deploy.bat
引数 : %{CurrentBuild:Name} %{CurrentProject:Name}
作業ディレクトリ : %{buildDir}
***
先のQt 5.4から「deploy.bat」をコピーして

「C:\Qt\5.7\mingw53_32\bin」フォルダにコピペします。

[ビルド]-[実行]します。
ビルドとデプロイが、できました!
「deploy」フォルダを見ると、
おっ!...一瞬いいかと思ったのですが、
やっぱ、下のVer1.1.7のとは、ちょっと異なってます。
「translations」フォルダができ、中に***.qmが入り、
d3dcompiler_47.dll もできた所までは、進歩です。
が、3つの***54.dll がありません。***53.dllも無くなっています。
もう一歩というか、やり過ぎ感があります。
改めて、Ver.1.1.7のフォルダを見ます。
結局、これがビルドされた Qtバージョンは、わかりません。
Qt 5.4.2 と Qt 5.7.1 の間のような気がします。
コンパイラMinGWのバージョンの違いなのかも?
で、今頃になって気づくわけですが
改めて、Ver.1.1.8のCandleを起動すると、真っ黒なのです。
背景だけかと思っていたら、GcodeをLOADしても何も見えません。
[Service]-[Settings]の[Colors]の所は、全部BLACK(-_-;)
で、Ver.1.1.7から「settings.ini」をコピペ!
「LICENSE」もコピペします。
で、起動すると
Colorは、正常になり、LICENSEも表示されるようになりました!
その後、Qt 5.7.1でデプロイしたのは、サイズが異常に大きいことに気づきました。
Candle自体もデカイし、
Qt5***.dllのサイズがデカイと思ったら、Qt5***d.dllとなっていて
下のVer.1.1.7は、[.dll」の前に「d」がなく、異なっているのです。
これが、Ver.1.1.7
Qt 5.4.2でやったものは、
全体的に上のVer.1.1.7とほぼ同等サイズです。
Qt5***.dllは、ファイル名は同じだが、サイズが微妙に異なります。
ということで、最初の「Desktop Qt 5.4.2 MinGW 32bit」が良いですね。
気になっていたのは、Qt 5.4.2でビルドしたものは、
「d3dcompiler_47.dll」がないとHeightMapの3D表示はできないかも
と思いましたが、できました!
「d3dcompiler_47.dll」は、Qt 5.7.1で生成され、Qt 5.4.2では生成されません。
[Tools]を展開して
[Qt 3D Studio 2.0.0]と[Qt 3D Studio 2.0.0 Runtime 2.0.0]の追加とは
無関係だということがわかりました。

一応、1番目の
 candle.pro 内に「VERSION = 1.1」とある「Candle-1.1.zip」を
やってみます。
Qtのバージョン条件などは、記載がないので
「Desktop Qt 5.4.2 MinGW 32bit」で
いきなり「デプロイ」設定してビルドします。
 右下にビルドエラーがでました(T_T)
 下の欄の[1 問題]ボタンを押すと、エラーが出てきました。
「Desktop Qt 5.4.2 MinGW 32bit」では、ダメなんでしょう?
「Desktop Qt 5.7.1 MinGW 32bit」だと
ビルドでエラーが更に増えて、これもダメでした(T_T)

2番目の「Candle-master.zip」
candle.pro 内に「VERSION = 1.0.12」とあるもの
「Desktop Qt 5.4.2 MinGW 32bit」で
無事ビルドが完了してCandleが起動しました!
ひょっとして中身は、1.1.7かも、と思ったのですが
「Version 1.0.12」になっています。
ので「Desktop Qt 5.7.1 MinGW 32bit」でやる必要なないですね。

<まとめ>
Candle Ver.1.1.8のビルドとデプロイの手順です。
【1】Qt開発環境「qt-unified-windows-x86-3.0.5-online.exe」をInstall
  (アンチウィルスソフトが誤検知する場合があるので注意)
【2】途中[MinGW 4.9.1(32 bit) OpenGL]にチェック
【3】Qt Creatorの[独自プロセスステップ]にデプロイ設定を入力
 ***
 コマンド : C:\Qt\5.4\mingw491_32\bin\deploy.bat
 引数 : %{CurrentBuild:Name} %{CurrentProject:Name}
 作業ディレクトリ : %{buildDir}
 ***
【4】「deploy.bat」を作成
 [C:\Qt\5.4\mingw491_32\bin\]フォルダに
 テキストドキュメント「deploy.bat」を新規作成
中身は、以下のコード
***
if "%1"=="デバッグ" (
set BUILD_MODE=debug
) else (
set BUILD_MODE=release
)

if not exist deploy\nul (

mkdir deploy
)

xcopy /C /Y %BUILD_MODE%\*.exe deploy\

windeployqt --%BUILD_MODE% deploy %BUILD_MODE%\%2.exe
***
【5】Qt Creatorで[ビルド]-[実行]
【6】[deploy]フォルダに実行形式(DLL含む)が生成される
  settings.ini、LICENSEファイルをVer.1.1.7からコピペする
【7】[deploy]フォルダごと、必要な場所にコピーして名称変更する
  Candleは、Installレスなので、中のCandle.exeを実行するだけでOK


やっと、一応、Qtのビルドなるものができるようになりました。
このような大掛かりなもののビルドは初めてなので
できるととても嬉しいものです。
これでCandleを改造できると思うとワクワクしてきます。
しかし、ちょっとイジってみるも、かなり難解です。
せめてコメントが入ったソースだったらまだ理解も進むのですが
コメントが皆無なのです。
C++の勉強も少しはしないといけないですね~
1年計画で改造してみるかな~

2 件のコメント:

昔青年 さんのコメント...

どんどんディープな世界に入っていきますね!
ソフトの改造うまくいったら、ダウンロードさせてくださいね。

マーティーの工房日誌 さんのコメント...

昔青年さん、こんにちは~
ちょっとどころか、かなり深過ぎました~
首を長~くして待ってください。
そういえば、回転計の宿題、もらってました...未だ手付かず...