2021/09/02(木) [n年前の日記]
#1 [povray][ubuntu][debian] povmodelerのビルドエラーについて少し調べた
POV-Ray専用モデリングツール、eticre版 povmodeler を、Ubuntu Linux 20.04 LTS上でビルドするとエラーを出してしまう件について少し調べてみた。ちなみに、Debian Linux 11 bullseye 上でビルドするとバイナリ作成まで辿り着く。
_eticre/povmodeler: povray modeler
_POV-Ray: Newsgroups: povray.programming: povmodeler
Ubuntu 20.04 LTS上でビルドすると、pmobjectdrag.cpp 内の Qt::endl という記述でエラーが出てしまう。ググってみたら、Qt のバージョンに起因するらしい。
Debina 11 に入っている Qt は 5.15.2。
Ubuntu 20.04 LTS に入ってる Qt は 5.12.8。Ubuntu 20.04 LTS に入ってる Qt のバージョンは、Debian のソレより古い。
Qt 5.14, 5.15 では Qt::endl という記述を使うことを強制されるけど、Qt 5.12.8 には Qt::endl という定義(?)は存在しないらしい。
_error: ‘endl’ is not a member of ‘Qt’ and library dependencies - Issue #22 - AD-Vega/qarv
_‘endl’ is not a member of ‘Qt’, Ubuntu 20.04 - Issue #27 - bullet-physics-playground/bpp
_[QTBUG-82680] QtWebEngine 5.15.0 cannot be built with Qt 5.12 (and 5.9) because Qt::endl does not exist - Qt Bug Tracker
_Port away from deprecated ::endl - KDE/kdevelop@929a7a0
ということで、Ubuntu 20.04 LTS に入ってる Qt が古いので、eticre版 povmodeler はビルドできないというオチだった。
解決策は…ソースを書き換えるしかないのかもしれない…。しかし、書き換えると、今度は Qt 5.14.x 以降で警告が出てしまうのだとか。でもまあ、警告が出てもビルドが通るなら、それでいいじゃんという気もする…。警告を全部消そうとソースを弄ってビルドが通らなくなるほうが馬鹿げてる…。
Ubuntu 20.04 LTS 上の Qt をアップデートできないかググってみたけど、簡単にアップデートできる方法は用意されてないっぽい。そもそも LTS版なので、そのあたりのバージョンを安易に上げられる方法が用意されるわけもないというか…。他に影響を及ぼす可能性が高過ぎるし…。
_eticre/povmodeler: povray modeler
_POV-Ray: Newsgroups: povray.programming: povmodeler
Ubuntu 20.04 LTS上でビルドすると、pmobjectdrag.cpp 内の Qt::endl という記述でエラーが出てしまう。ググってみたら、Qt のバージョンに起因するらしい。
Debina 11 に入っている Qt は 5.15.2。
$ qmake -v QMake version 3.1 Using Qt version 5.15.2 in /usr/lib/x86_64-linux-gnu
Ubuntu 20.04 LTS に入ってる Qt は 5.12.8。Ubuntu 20.04 LTS に入ってる Qt のバージョンは、Debian のソレより古い。
Qt 5.14, 5.15 では Qt::endl という記述を使うことを強制されるけど、Qt 5.12.8 には Qt::endl という定義(?)は存在しないらしい。
_error: ‘endl’ is not a member of ‘Qt’ and library dependencies - Issue #22 - AD-Vega/qarv
_‘endl’ is not a member of ‘Qt’, Ubuntu 20.04 - Issue #27 - bullet-physics-playground/bpp
_[QTBUG-82680] QtWebEngine 5.15.0 cannot be built with Qt 5.12 (and 5.9) because Qt::endl does not exist - Qt Bug Tracker
_Port away from deprecated ::endl - KDE/kdevelop@929a7a0
ということで、Ubuntu 20.04 LTS に入ってる Qt が古いので、eticre版 povmodeler はビルドできないというオチだった。
解決策は…ソースを書き換えるしかないのかもしれない…。しかし、書き換えると、今度は Qt 5.14.x 以降で警告が出てしまうのだとか。でもまあ、警告が出てもビルドが通るなら、それでいいじゃんという気もする…。警告を全部消そうとソースを弄ってビルドが通らなくなるほうが馬鹿げてる…。
Ubuntu 20.04 LTS 上の Qt をアップデートできないかググってみたけど、簡単にアップデートできる方法は用意されてないっぽい。そもそも LTS版なので、そのあたりのバージョンを安易に上げられる方法が用意されるわけもないというか…。他に影響を及ぼす可能性が高過ぎるし…。
◎ ソースを書き換えて試してみた。 :
ダメ元で、ソースを書き換えて試してみた。*.cpp 内の Qt::endl を endl に置換。
他の部分でもエラーが出た。pmglview.cpp の PMGLView::wheelEvent() 内で「QWheelEventクラスに position なんて無いよ」と言われる。dickbalaska版 tpovmodeler を参考にして修正。
_qtpovmodeler/pmglview.cpp at qmake - dickbalaska/qtpovmodeler
_povmodeler/pmglview.cpp at master - eticre/povmodeler
この状態でビルドしてみたら、Ubuntu 20.04 LTS 上でもビルドが通った。make install で、~/.local/share/povmodeler/ 内に、実行ファイル povmodeler や関連ファイルもコピーされた。また、povmodeler も実行することができた。
一応、ビルド手順をメモ。
必要になりそうなパッケージをインストール。
github から git で clone してビルド。
もっとも、このあたりを修正済みの dickbalaska版 qtpovmodeler をビルドして触ってみたほうがいいような気もする…。
他の部分でもエラーが出た。pmglview.cpp の PMGLView::wheelEvent() 内で「QWheelEventクラスに position なんて無いよ」と言われる。dickbalaska版 tpovmodeler を参考にして修正。
_qtpovmodeler/pmglview.cpp at qmake - dickbalaska/qtpovmodeler
_povmodeler/pmglview.cpp at master - eticre/povmodeler
- e->angleDelta().y() を、e->delta() に変更。
- e->position().x()、e->position().y() を、e->x()、e->y() に変更。
この状態でビルドしてみたら、Ubuntu 20.04 LTS 上でもビルドが通った。make install で、~/.local/share/povmodeler/ 内に、実行ファイル povmodeler や関連ファイルもコピーされた。また、povmodeler も実行することができた。
一応、ビルド手順をメモ。
必要になりそうなパッケージをインストール。
sudo apt install build-essential cmake git sudo apt install qt5-default qtbase5-dev qttools5-dev-tools sudo apt install libfreetype6 libfreetype6-dev sudo apt install libqt5x11extras5 libqt5x11extras5-dev libqt5opengl5 libqt5opengl5-dev sudo apt install libx11-dev xorg-dev sudo apt install libglu1-mesa libglu1-mesa-dev libgl1-mesa-glx libgl1-mesa-dev libglfw3 libglfw3-dev libglew-dev sudo apt install libxml2-dev sudo apt install povray
github から git で clone してビルド。
mkdir ~/povmodeler cd ~/povmodeler git clone https://github.com/eticre/povmodeler.git cd povmodeler ... *.cpp を修正 ... mkdir build cd build cmake .. make -j4 make install
もっとも、このあたりを修正済みの dickbalaska版 qtpovmodeler をビルドして触ってみたほうがいいような気もする…。
◎ POV-Rayウインドウの閉じ方。 :
eticre版 povmodeler で、POV-Ray を使ってレンダリングすると、POV-Ray のレンダリング結果表示ウインドウを閉じることができなくて困ってしまったのだけど。
povmodeler 側の「stop」ボタンをクリックしてみたら POV-Ray のウインドウを閉じることができて、かつ、 povmodeler 側のウインドウにレンダリング結果が表示されることが分かった。そういう操作をすることが前提だったのかもしれない…。
povmodeler 側の「stop」ボタンをクリックしてみたら POV-Ray のウインドウを閉じることができて、かつ、 povmodeler 側のウインドウにレンダリング結果が表示されることが分かった。そういう操作をすることが前提だったのかもしれない…。
[ ツッコむ ]
以上です。