[Qt-users:686] Re: Raspberry Pi 版 Qt/QtCreator の自前ビルドについて

S.Fuchita fi7s-fct @ asahi-net.or.jp
2017年 9月 5日 (火) 22:04:22 JST


soramimiです。

ぜんぜん根本解決になっていないですが、以下のMakefileのLIBSの定義に -lQt5PrintSupport を追加して、むりやりビルドを通しました。

/home/pi/q/qt-creator-build/src/plugins/cpaster/frontend/Makefile
/home/pi/q/qt-creator-build/src/tools/buildoutputparser/Makefile

で、ビルドは通ったものの、qtcreatorを実行したところ、「* failed to add service - already in use?」という
エラーが出て、調べてみると、Raspberry PiとOpenGLに関する特有のエラーらしく、
とりわけ、Raspberry PiでQtアプリを実行すると、よく見られるエラーらしいです。
raspi-configでOpenGLドライバを無効に設定したところ、エラーは出なくなり、起動はできたのですが、
今度は、Full Screen モードにしてないのに、画面いっぱいに表示されてしまい、ウィンドウマネージャが無視されている模様です。



>どもども松本です。
>的外れだったらごめんなさい。という前提で。
>
>アイディア1)cpasterをそもそもビルドしない
>アイディア2)dependsに追加してみる
>.pro, .qbsともに、printsupportを追加したらいけたりしないのかなーと。
>
>src/plugins/cpaster/cpaster.qbs
>Depends { name: "Qt"; submodules: ["widgets", "network"] }
>src/plugins/cpaster/cpaster.pro
>QT += network
>
>
>
>2017年9月3日 11:23 S.Fuchita <fi7s-fct @ asahi-net.or.jp>:
>>
>> 渕田@soramimi_jpです。
>>
>>
>> Raspberry Pi 用のQt開発環境の構築方法をまとめようとしているところです。
>> まだ公開前ですが、草稿を下記アドレスに置いてあります。
>>
>> http://www.soramimi.jp/qt/raspberrypi201709/
>>
>>
>> Qtライブラリの方はビルドに成功しているのですが、Qt Creator が失敗してしまいます。
>> cpasterというプラグインのリンクで、QPrinterのコンストラクタが見つからない、
>> みたいなエラーが出ています。
>>
>>
>> pi @ beatrice:~/q/qt-creator-build/src/plugins/cpaster/frontend$ pwd
>> /home/pi/q/qt-creator-build/src/plugins/cpaster/frontend
>> pi @ beatrice:~/q/qt-creator-build/src/plugins/cpaster/frontend$ make
>> /usr/bin/g++ -mfloat-abi=hard -Wl,-z,origin '-Wl,-rpath,$ORIGIN/../../lib/qtcreator:$ORIGIN/../../lib/qtcreator/plugins:
>> $ORIGIN:$ORIGIN/..:$ORIGIN/../lib/qtcreator' -Wl,-O1 -Wl,-rpath,/opt/Qt5.9.1/lib -Wl,-rpath-link,/opt/vc/lib -Wl,-rpath-
>> link,/usr/lib/arm-linux-gnueabihf -Wl,-rpath-link,/lib/arm-linux-gnueabihf -o ../../../../libexec/qtcreator/cpaster .obj
>> /release-shared/protocol.o .obj/release-shared/pastebindotcomprotocol.o .obj/release-shared/pastebindotcaprotocol.o .obj
>> /release-shared/kdepasteprotocol.o .obj/release-shared/urlopenprotocol.o .obj/release-shared/argumentscollector.o .obj/r
>> elease-shared/main.o .obj/release-shared/moc_protocol.o .obj/release-shared/moc_pastebindotcomprotocol.o .obj/release-sh
>> ared/moc_pastebindotcaprotocol.o .obj/release-shared/moc_kdepasteprotocol.o .obj/release-shared/moc_urlopenprotocol.o
>> -L/opt/vc/lib -L/home/pi/q/qt-creator-build/lib/qtcreator -L/home/pi/q/qt-creator-build/lib/qtcreator/plugins -lCore -lA
>> ggregation -lExtensionSystem -lUtils -L/opt/Qt5.9.1/lib -lQt5Widgets -lQt5Gui -lQt5Concurrent -lQt5Network -lQt5Core -lG
>> LESv2 -lpthread
>> /home/pi/q/qt-creator-build/lib/qtcreator/plugins/libCore.so: undefined reference to `QPrinter::QPrinter(QPrinter::Print
>> erMode)@Qt_5'
>> collect2: error: ld returned 1 exit status
>> Makefile:276: recipe for target '../../../../libexec/qtcreator/cpaster' failed
>> make: *** [../../../../libexec/qtcreator/cpaster] Error 1
>>
>>
>> このリンクコマンドの中に PrintSupport が見当たらないので、 -lQt5PrintSupport を加えて実行してみたところ、成功するようです。
>> Makefileの冒頭を見てみると、
>>
>>
>> #############################################################################
>> # Makefile for building: ../../../../libexec/qtcreator/cpaster
>> # Generated by qmake (3.1) (Qt 5.9.1)
>> # Project:  /home/pi/q/qt-creator/src/plugins/cpaster/frontend/frontend.pro
>> # Template: app
>> # Command: /opt/Qt5.9.1/bin/qmake -o Makefile /home/pi/q/qt-creator/src/plugins/cpaster/frontend/frontend.pro
>> #############################################################################
>>
>> (中略)
>>
>> LIBS          = $(SUBLIBS) -L/opt/vc/lib -L/home/pi/q/qt-creator-build/lib/qtcreator -L/home/pi/q/qt-creator-build/lib/q
>> tcreator/plugins -lCore -lAggregation -lExtensionSystem -lUtils -L/opt/Qt5.9.1/lib -lQt5Widgets -lQt5Gui -lQt5Concurrent
>>  -lQt5Network -lQt5Core -lGLESv2 -lpthread
>>
>>
>> の様になっていて、やはり -lQt5PrintSupport は存在していません。
>>
>> このMakefileは /home/pi/q/qt-creator/src/plugins/cpaster/frontend/frontend.pro から生成されたもののようなので、
>> 辿っていくと /home/pi/q/qt-creator/qtcreator.pri にたどり着きました。このファイルの下の方に、
>>
>>
>> # recursively resolve plugin deps
>> done_plugins =
>> for(ever) {
>>     isEmpty(QTC_PLUGIN_DEPENDS): \
>>         break()
>>     done_plugins += $$QTC_PLUGIN_DEPENDS
>>     for(dep, QTC_PLUGIN_DEPENDS) {
>>         dependencies_file =
>>         for(dir, QTC_PLUGIN_DIRS) {
>>             exists($$dir/$$dep/$${dep}_dependencies.pri) {
>>                 dependencies_file = $$dir/$$dep/$${dep}_dependencies.pri
>>                 break()
>>             }
>>         }
>>         isEmpty(dependencies_file): \
>>             error("Plugin dependency $$dep not found")
>>         include($$dependencies_file)
>>         LIBS += -l$$qtLibraryName($$QTC_PLUGIN_NAME)
>>     }
>>     QTC_PLUGIN_DEPENDS = $$unique(QTC_PLUGIN_DEPENDS)
>>     QTC_PLUGIN_DEPENDS -= $$unique(done_plugins)
>> }
>>
>>
>> と記述されていて、 QTC_PLUGIN_DEPENDS というのが関係ありそうかも、というところまでは分かりましたが、
>> これ以上、メイクスクリプトを調べるのは私には難しそうです。
>>
>> qtcreator.pri を include している .pro ファイルが Makefile を生成する際、
>> ライブラリに -lQt5PrintSupport を追加できれば、先に進めると思うのですが、
>> その方法が分かりません。どなたか分かりませんか?
>>
>>
>> 以上、よろしくお願いします。
>> _______________________________________________
>> Qt-users mailing list
>> Qt-users @ qt-users.jp
>> http://qt-users.jp/mailman/listinfo/qt-users
>_______________________________________________
>Qt-users mailing list
>Qt-users @ qt-users.jp
>http://qt-users.jp/mailman/listinfo/qt-users




Qt-users メーリングリストの案内