淺入深出在Win XP上傻瓜式編譯安裝Qwt

喜歡程式設計嗎?想要一窺 KDE/Qt 程式設計的奧秘嗎?想要
學習 X Window 上的視窗程式設計嗎?歡迎各類關於 KDE/Qt、Qtopia、Qt/Embedded、QSA、PyQt 等各類心得討論。

版主: AceLan, Franklin

淺入深出在Win XP上傻瓜式編譯安裝Qwt

文章訪客 » 週三 9月 09, 2009 9:31 am

http://www.cuteqt.com/blog/?p=994

現在看到的本文已經是第三版,寫這篇博文的起初原因是本菜菜最近準備使用Qwt開發一些功能部件,而公司里基本是使用win Xp系統進行開發工作,為了便於日後的團隊開發,所以研究了怎麼將qwt庫和QtCreator整合起來。
但是由於不是很嚴謹的態度,但隨便的實驗感覺成功後,感覺整合沒問題後,就輕鬆地寫了篇博文,幸虧由於shiroki大姐的指出,才發現許多不足,甚至是嚴重的錯誤會誤導別人。
通過雙休日的不懈努力和研究,總算實驗成果,並且證實了本菜菜的思路,而且對於Qt更加了解,對以前缺少的知識點也得到了補足,這個內容麼,也真正做到的淺入深出。
在基於Qt繪製科學圖表-- Qwt試用中,shiroki大姐介紹了怎麼樣在linux下安裝qwt,並使用qwt,本菜菜經過在winXp操作系統下的不斷嘗試,發現能快速地使用Qt Creator進行編譯,而在開發程序時也能使用Qt Creator進行,故詳細地介紹給大家。

首先確定你使用的是winXP操作系統,並且已經安裝了Qt SDK for windows,如果沒有安裝,可以去Qt官方網站下載安裝包安裝,安裝的過程十分簡便,跟普通的windows的EXE安裝包沒有太大區別,指定好路徑,一路next就可以安裝,在安裝完成後,也無需設置環境變量即可使用來編寫編譯Qt程序。

安裝完畢後,即可使用QtCreator,然後去下載qwt的源代碼,目前的版本為qwt-5.2.0,在前面文章中提供過項目主頁地址,在項目主頁地址下可以選擇下載對應linux的tar源碼壓縮包或者對應win的zip源碼壓縮包,我們選擇的自然是zip壓縮包,然後下載完成後,解壓在英文路徑下的目錄即可。

有了Qt SDK,qwt的編譯過程自然就變得簡單無比了,環境變量啊,Qt的lib庫啊,一切都有Qt SDK幫助,這就是為什麼是我想說傻瓜式安裝qwt的原因。相比以前的編譯,安裝和設置環境變量,使用Qt Creator可以幫助簡化步驟。

打開Qt Creator,打開qwt源碼目錄下的.pro工程文件,然後點擊左下的run按鈕,qwt就開始了自動編譯的的過程:

編譯過程需要5到10分種時間,可以坐下別的事,或者喝杯咖啡什麼的>_<,並且Qt Creator幫助我們做好一切工作,我們只要等待編譯完成就可以了。

當編譯完成後,只要完成最後一步就可以在winXP上使用QtCreator來編寫qwt相關程序,並且在Qt設計師裡使用qwt的部件。在編譯完成qwt目錄下,有lib目錄和designer目錄,將lib目錄裡的qwt5.dll文件拷貝至qt sdk的目錄下的qt目錄的bin目錄中(比如本菜菜為F:\Qt\2009.03\ qt\bin),將libqwt5.a文件拷貝至對應的lib目錄(如F:\Qt\2009.03\qt\lib),最後將designer目錄下的plugins目錄的designer目錄(真繞口啊囧)下的libqwt_designer_plugin5.a文件和qwt_designer_plugin5.dll拷貝到跟上面一樣對應的plugins目錄下的designer目錄(如F:\Qt\2009.03\qt\plugins\designer),看起來十分繁瑣,其實是非常簡單的過程。

好吧,如果真是這樣用真的就太美好了,真的是傻瓜式的安裝,只要編譯好將庫文件複製過去,這真是容易極了...

但是事與願違,這一切只是淺入的開頭,真正的深出還在後面,以上這樣步驟可以視為是準備qwt庫的過程,而真正要寫qwt還有很重要的步驟,本菜菜將放在下一篇詳細解說,如果你想在winXP上使用qwt,就請先按這些步驟完成吧。
訪客
 

文章訪客 » 週三 9月 09, 2009 9:40 am

http://www.cuteqt.com/blog/?p=1015

在上篇中,介紹瞭如何使用QtCreator編譯安裝qwt,現在介紹怎麼使用QtCreator來編寫使用了qwt庫的qt程序。

為了簡化流程,本菜菜直接複製了qwt中example的代碼,並且使用QtCreator新建一個工程並將代碼粘貼進去。這時如果誤以為只要點擊run就可以運行程序,那就是大錯特錯了。本菜菜開始時就犯瞭如下的錯誤,不幸的是,是直接使用了qwt目錄裡的example,而裡面的pro工程文件可是設置完畢的,只要生成了庫文件dll和libxx.a的文件情況下,自然是可以運行的。本菜菜就是這樣被蒙蔽了,才造成qwt庫設置完畢的假象。

這時如果點擊run,多半會出現以下錯誤:

簡單地來說,就是QtCreator找不到qwt庫中各個類型的聲明。解決的辦法也很簡單,將qwt的頭文件包含進去即可。去qwt的解壓目錄,在下面有個src目錄,裡面就有所有qwt的源碼文件,將其中的.h頭文件複製出來,然後去Qt SDK的安裝目錄,在下面的qt子目錄的include目錄裡(比如F:\Qt\2009.03\qt\include)新建一個Qwt文件,將復制出來的.h文件粘貼進去。

Qwt畢竟是第三方庫,指望QtCreator能自動認出來,還需要在.pro里文件設置LIBS和INCLUDEPATH ,這些屬於qmake的知識範疇內,有興趣的朋友可以去看看文檔qmake手冊部分: http://qt.nokia.com/doc/4.5/qmake-manual.html

本菜菜的設置如下:

LIBS += -L”f:/Qt/2009.03/qt/lib” -lqwt5
INCLUDEPATH += f:/Qt/2009.03/qt/include/qwt

各人設置愛好都不一樣,大家可以根據自己的需求來設置。
上面這些步驟濃縮起來時很簡單,但在一無所知地情況下,本菜菜花費了大量的時間來嘗試,可謂步步都留下辛勤的汗水。
恐怕很多在想了,現在總可以正常使用qwt了吧,好吧,我也是這樣想的,結果卻是:

真是很鬱悶的錯誤啊,然後又花費了大量的時間進行研究,原因其實也很簡單,在winXP下面,Qt是不能混用庫的。在QtCreator下面,默認編譯運行的是debug模式,而本菜菜編譯出來的是release庫,自然就不行了。這時設置QtCreator為release模式,就能運行程序,但這樣,調試怎麼辦了?
當然,只要編譯qwt生成debug庫文件,自然就可以在QtCreator下使用debug模式編譯使用。
這是,去qwt的源碼目錄,打開qwtconfig.pri文件,可以使用記事本,也可以使用類似UltraEdit的軟件工具,在裡面找到這段:

win32 {
# On Windows you can't mix release and debug libraries.
# The designer is built in release mode. If you like to use it
# you need a release version. For your own application development you
# might need a debug version.
# Enable debug_and_release + build_all if you want to build both.
CONFIG += debug # release/debug/debug_and_release
#CONFIG += debug_and_release
#CONFIG += build_all
}

修改成為

win32 {
# On Windows you can't mix release and debug libraries.
# The designer is built in release mode. If you like to use it
# you need a release version. For your own application development you
# might need a debug version.
# Enable debug_and_release + build_all if you want to build both.
#CONFIG += debug # release/debug/debug_and_release
#CONFIG += debug_and_release
CONFIG += build_all
}
else {
CONFIG += release # release/debug
}
}

然後按照上篇中的編譯流程,最後把生成的dll和.a文件拷貝過去即可,其中,如果是debug的文件,文件名會多個d,比如qwtd5.dll,而在QtCreator裡運行debug模式,也需要在.pro文件裡稍作修改:

LIBS += -L”f:/Qt/2009.03/qt/lib” -lqwtd5
INCLUDEPATH += f:/Qt/2009.03/qt/include/qwt

最後,程序總算能成功運行了,整合到設計器的部分就請等下篇吧
訪客
 

淺入深出在Win XP上傻瓜式編譯安裝Qwt(下)

文章訪客 » 週四 9月 17, 2009 12:37 pm

在上和中篇中,通過一些列簡單的配置,我們可以方便在WinXP上編譯安裝Qwt庫,並且對pro文件作少需修改,就可以順利的使用Qwt庫開發程序。

對於習慣敲代碼的人來說,到這步已經足以滿足開發的需求,但對於要求快速應用開發或者是習慣於Qt設計器的開發人員來說,這還遠遠不夠。 細心的人可能會覺得,前面把庫文件複製過去了,不是應該已經集成到了Qt設計器裡麼。 這樣想的人可以說,對於Qt SDK是不甚了解,Qt SDK是由兩部分組成,Qt Creator和Qt庫,沒有Qt Creator,照樣能使用Qt庫寫程序,沒有了Qt庫,Qt Creator可幹不了什麼。

在上中,我做的緊緊是把Qwt庫集成到了Qt庫中,如果啟動Qt的庫的設計器,自然就能看到旁邊可選擇得Qwt部件,而在QtCreator的設計器中,是不會出現Qwt的部件。

以此類推,解決的辦法就是講Qwt插件文件複製到QtCreator的bin目錄下去,如我就是F:\Qt\2009.03\bin\designer。 假如這能一次性成功,那該是多麼好的事情,現實是殘酷的,QtCreator中的設計器顯示該插件無法加載,而錯誤信息顯示:

“The plugin uses incompatible Qt library. Expected build key “Windows msvc relase full-config”, to “Windows mingw release full-config”.

明明Qt庫是用mingw編譯,為什麼會出現msvc編譯器呢? 於是仔細查找了有關資料,發現以下這段話:

The version of QT Creator shipped with the QT SDK Open Source version for windows is build using Visual Studio, whereas the SDK is build with and supports g++ (MinGW). This doesn't cause too many problems, but it totally defeats building and installing QT Designer plugins into QT Creator. The error message is:
Expected build key “Windows msvc release full-config” got “Windows mingw release full-config”

結果非常清晰了,Qt SDK for Windows的兩部分是由不同編譯環境編譯而成,QtCreator是由msvc編譯,Qt庫是由mingw編譯,我們編譯出來的Qwt庫是基於mingw的Qt庫,自然就不能被QtCreator識別。
那解決的辦法也自然出來了:

It can be solved three different ways:
1) Build QT Creator from source with MinGW
2) Build the plugin with Visual Studio
3) Build QT Creator with build key checking turned off.

相信這樣的英文難不倒各位,而我選擇了第一種辦法,嘿嘿,只要拿現有的QtCreator把從官下載的QtCreator源碼編譯下,不就OK了麼,多麼easy的過程。 看過上的同學們應該能很輕易的完這步驟。
重新使用編譯完的QtCreator後,Qwt部件總算出現了,漫長繁瑣的文章也到此為止,希望大家都能順利地使用上Qwt庫。

本站所有文章由本站和原作者保留一切权力,仅在保留本版权信息、原文链接、原文作者的情况下允许转载,转载请勿删改原文内容, 并不得用于商业用途。 谢谢合作。
原文链接: http://www.cuteqt.com/blog/?p=1037
訪客
 


回到 KDE/Qt 程式設計

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客