mieki256's diary



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。
$ 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

  • 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 側のウインドウにレンダリング結果が表示されることが分かった。そういう操作をすることが前提だったのかもしれない…。

以上、1 日分です。

過去ログ表示

Prev - 2021/09 -
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project