使用 qt quick compiler 編譯 Qt Virtual Keyboard

在 virtualkeyboard.pro 中加入

CONFIG += qtquickcompiler

之後,發現 #include <private/qqmlmetatype_p.h> 這一個檔會找不到。於是又需要在 pro 檔中加入 QT += qml-private

加入完後,編譯可以成功,但是 qrc 檔並沒有被 quick compiler 處理過。找了半天,才發現 qt quick compiler 根本不在我 cross-compile 後的 qt install bin 目錄下。上網找答案,發現底下的討論:

https://forum.qt.io/topic/56081/solved-qtquickcompiler-for-cross-compiled-qt-5-4-2-version/4

裡頭說了在安裝 qt commercial 版本 for x86 時,裡頭就有一個編好的 qtquickcompiler 執行檔了。由於 quick compiler 只是將 resource 檔轉成 .cpp 檔,所以它應該是要在 x86 裡頭執行的。做以下步驟(基於 qt enterprise 2.0.2,Qt 5.5.0):
  1. 複製 qt-enterprise-2.0.2/5.5/gcc/bin/qtquickcompiler 到 cross-compile 安裝的 qt bin 目錄
  2. 複製 qt-enterprise-2.0.2/5.5/gcc/mkspecs/features/qtquickcompiler.prf 到 cross-compile 安裝的 qt mkpsecs/features 目錄
  3. 重新啟動 qt creator
而重啟 qt creator 之後又再看到 libQt5Core.so.5 找不到的問題,這個就是我們打開 qt creator 時,lib 已經被指到 cross-compile 的 qt lib 中了。而 qtquickcompiler 要連結原本 x86 qt lib。

所以在 qt creator 中設定 build environment 中加入

export LD_LIBRARY_PATH=[prefix]/qt-enterprise-2.0.2/5.5/gcc/lib

上述的 [prefix] 請填入自己 qt enterprise 安裝的 prefix。

完成以上後,qt quick compiler 成功動作啦!但…用 QQuickWidget 載 virtual keyboard 的速度還是沒比較快…

留言

熱門文章