渕田@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 を追加できれば、先に進めると思うのですが、 その方法が分かりません。どなたか分かりませんか?
以上、よろしくお願いします。
どもども松本です。 的外れだったらごめんなさい。という前提で。
アイディア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
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
@soramimi_jpです。
試行錯誤しながら、なんとか Raspberry Pi 版 Qt/QtCreator の自前ビルドには成功したのですが、 Qt Creator を起動して、新規プロジェクトの作成で、
Failed to obtain Designer plugin code generation service.
というエラーが出てしまいます。
https://files.soramimi.jp/tmp/qtcreator.png
デザイナーが起動できないようで、GUIなしのプロジェクトなら作成できます。
何か解決のヒントはないでしょうか?
Qt5.9.1/QtCreator4.4.0を使用しています。 OSはRaspbianですが、最新のstretchではなくjessieです。
以上、よろしくお願いいたします。
朝木です。
2017年9月28日 1:12 S.Fuchita fi7s-fct@asahi-net.or.jp:
@soramimi_jpです。
試行錯誤しながら、なんとか Raspberry Pi 版 Qt/QtCreator の自前ビルドには成功したのですが、 Qt Creator を起動して、新規プロジェクトの作成で、
Failed to obtain Designer plugin code generation service.
というエラーが出てしまいます。
https://files.soramimi.jp/tmp/qtcreator.png
デザイナーが起動できないようで、GUIなしのプロジェクトなら作成できます。
何か解決のヒントはないでしょうか?
おそらくですが、Qt Creator のフルビルドに必要な Qt のモジュールがそろってないのだと思います。
Qt Creator のビルド環境で qmake -r を実行すると
Qt Widget Designer plugin has been disabled since the Qt Designer module is not available. というwarningが出たりしていませんか。
qt-creator/src/plugins/plugins.pro に以下の様に定義されています。
qtHaveModule(designercomponents_private) { SUBDIRS += designer } else { warning("Qt Widget Designer plugin has been disabled since the Qt Designer module is not available.") }
この場合、designercomponents_private というモジュールがないため、designerプラグインがビルド対象から外れています。
Qt に mkspecs/modules/qt_lib_designercomponents_private.pri があるかどうか確認してみてください。
Qt の configure のオプションかログがあると対応方法も分かるかもしれません。 configure のオプションに -nomake tools がついていたら外してください。
よろしくお願いします。
Qt5.9.1/QtCreator4.4.0を使用しています。 OSはRaspbianですが、最新のstretchではなくjessieです。
以上、よろしくお願いいたします。
Qt-users mailing list Qt-users@qt-users.jp http://qt-users.jp/mailman/listinfo/qt-users
@soramimi_jpです。
ありがとうございます。
その後いろいろ試していて、なぜか成功しました。成功したので一応解決なのですが、 うまくいくケースといかないケースの切り分けをしたいので、configureオプションを 少しずつ変えながら検証してみようと思います。
Qt SDK をRaspberry Piの実機でビルドするだけで一晩潰れるので大変ですが(笑)
朝木です。
2017年9月28日 1:12 S.Fuchita fi7s-fct@asahi-net.or.jp:
@soramimi_jpです。
試行錯誤しながら、なんとか Raspberry Pi 版 Qt/QtCreator の自前ビルドには成功したのですが、 Qt Creator を起動して、新規プロジェクトの作成で、
Failed to obtain Designer plugin code generation service.
というエラーが出てしまいます。
https://files.soramimi.jp/tmp/qtcreator.png
デザイナーが起動できないようで、GUIなしのプロジェクトなら作成できます。
何か解決のヒントはないでしょうか?
おそらくですが、Qt Creator のフルビルドに必要な Qt のモジュールがそろってないのだと思います。
Qt Creator のビルド環境で qmake -r を実行すると
Qt Widget Designer plugin has been disabled since the Qt Designer module is not available. というwarningが出たりしていませんか。
qt-creator/src/plugins/plugins.pro に以下の様に定義されています。
qtHaveModule(designercomponents_private) { SUBDIRS += designer } else { warning("Qt Widget Designer plugin has been disabled since the Qt Designer module is not available.") }
この場合、designercomponents_private というモジュールがないため、designerプラグインがビルド対象から外れています。
Qt に mkspecs/modules/qt_lib_designercomponents_private.pri があるかどうか確認してみてください。
Qt の configure のオプションかログがあると対応方法も分かるかもしれません。 configure のオプションに -nomake tools がついていたら外してください。
よろしくお願いします。
Qt5.9.1/QtCreator4.4.0を使用しています。 OSはRaspbianですが、最新のstretchではなくjessieです。
以上、よろしくお願いいたします。
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