渕田@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 を追加できれば、先に進めると思うのですが、 その方法が分かりません。どなたか分かりませんか?
以上、よろしくお願いします。