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

Naoki Matsumoto nekomatu @ gmail.com
2017年 9月 5日 (火) 14:40:23 JST


どもども松本です。
的外れだったらごめんなさい。という前提で。

アイディア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 メーリングリストの案内