QT是一個跨平台的圖GUI編程的圖形庫,現在由Nokia公司維護,最新的發行版是4.6.2。我們將開發一款基於ARM平台的手持產品,開發庫
的平台選擇有Android與QT,我個人喜歡用C++,故比較傾向使用QT。
QT是一個開源的圖形庫,針對不同的CPU平台使用不同
的編譯器進行編譯來達到跨平台,這點與JAVA有點不同,JAVA的跨平台是由虛擬機器來實現。使用開源項目的麻煩之處在於你得到代碼後需要自己編譯才能使
用,我們要使用QT要比使用單單的開源項目更麻煩,因為我們的程式運行平台由於不能直接進行程式的編譯器,需要使用交叉編譯工具鏈進行編譯,這對習慣於
使用VC來開發的人來說是個不小的改變。
曾經有人說QT屬於失意者陣營的產品,開始我還不相信。經過半個月的編譯,感覺到把它扔到失意
者陣營是很正確的分類。有過VC開發經驗的人都知道,一個MSDN基本上能解決開發過程中遇到的絕大總分問題;VC的方便性更是無與倫比的。
在編譯QT時,最新版本的源碼不再分Embedded和X11版,使用一套代碼便可以編譯出針對不同平台的庫檔案。本來這個做法是件好事,可惡的是文檔
的介紹太山寨了,按照官網提供的編譯說明,根本沒辦法達到自己的需求,在網上搜尋出的各個說明資料都是以4.5.×以下的版本,這些版本都是分
Embedded和X11發行的,編譯要容易些。
開始時先編譯Embedded版本,這個編譯很順利,基本上一天就搞定,但拿到板子上
運行時,出現了可惡的兩滑鼠事件。這個版本的QT是直接操作FrameBuffer,相當於針對在沒有案頭環境的情況運行QT程式的需求。兩滑鼠問題找了
很久沒找到原因,最後設定了一些開機啟動的參數,不啟動案頭環境,來消除另一個滑鼠。得到的結果是,只能運行QT自己的程式,無法使用其它的程式,此時我
已經快瘋了。
然後在網上找資料,發現一個lab裡有一篇關於X11版本的編譯說明,在編譯的測試階段都出現了不可修改的錯誤,然後無意
中在這個lab中又發現一篇類似文章(實際這個網址很早以前就有同事給過我),看了一遍沒看明白寫得些啥玩意,找其它資料又找不到,只好邊看邊試了。試的
過程中完全是一步一個坎……折騰了快兩個星期才搞定……途中對這東西差點就絕望了……編譯個庫都這麼費勁,不把它扔到失意者陣營,完全不能解心頭之恨~
整完以後,感覺對交叉編譯的理解倒是更清楚了些。而且測試Hello
World時,也是可以用的,目前看來此任務算是完美結束了。不知道將來實際寫代碼時,還會遇到多大的坎……