2012-05-24 16 views
2

我已經在我的ubuntu機器上用mingw建立了一個交叉編譯環境,我試圖用Qt進行設置。Windows和Linux的C++ Qt頭文件是否相同?

我已經閱讀了幾篇博客文章和其他參考頁面,但沒有一個人似乎解釋了從哪裏獲得Qt頭文件。在少數人看來,他們似乎都會說下載安裝程序的Qt創建者的Windows,在葡萄酒中運行它,瀏覽到頭文件的位置並將其複製出來。

這些文件與我已安裝的文件不同嗎? (我從apt-get安裝了Qt包)如果我已經擁有了我需要的文件,我不會在下載半個小時的時候看到這個問題,也沒有看到解包時間。

歡呼提前:)

+0

除了頭文件,用Qt編譯還需要'moc'預處理器。 – MSalters

回答

4

對於windows和linux,C++ Qt Headers是否相同?

它們不同。在Windows平臺上從源代碼編譯期間,qt至少會生成一個特定於平臺的文件,而原始源代碼分發存檔中不存在該文件。

一種這樣的文件是qconfig.h(SRC/corelib的/全局/ qconfig.h),其間接地從QtGlobal包括和包含某些特定於平臺的定義,如:

#define Q_BYTE_ORDER Q_LITTLE_ENDIAN 

// Compile time features 
#define QT_ARCH_WINDOWS 

在Linux該文件將具有非常不同的內容。

此文件在源代碼分發中不存在,並在編譯期間生成。在linux系統上,這個文件將有不同的內容。所以不,你不能只使用linux頭文件。 YOu 可能能夠手動調整標題,但簡單地抓住已放入的包裹會更容易。顯然,您需要庫(.dll/ .lib(或* .a))與Qt鏈接,並且linux庫不適合。

看不到點半演出下載

,而無需下載SDK下載libraries的(見頁面底部)。每個包是200..300 MB,這比「一半演出」少。

+0

鏈接到庫指向一個可執行文件,但tar.gz存檔也可用包含來源 - 我應該下載哪個? – jackweirdy

+0

@jackweirdy:* .tar.gz是源代碼。從源代碼編譯qt需要很多時間,如果您要爲Windows進行交叉編譯,編譯可能需要更長時間並且可能不成功。 – SigTerm

1

的標題,則.h文件,定義與您使用Qt在該平臺上進行交互的標準接口。該平臺的具體實施將與平臺有所不同。所以頭文件是相同的,但是庫本身會有所不同,這意味着你需要在Windows系統上安裝Qt的Windows版本,但是相同的代碼應該在其中任何一個上編譯。

在Ubuntu中,您將需要libqt4-dev

+0

我已經安裝了;所以如果我符號鏈接「包含」目錄指向現有的標題,它應該在mingw下編譯? – jackweirdy

+1

那麼問題是,你仍然需要一個Windows版本的QT才能運行...所以你仍然需要QT DLL。嚴格地說,標題是相同的,但爲了鏈接,你可能還需要二進制文件。 – hsanders

+0

錯誤的答案。Qt生成特定於平臺的頭文件,而「頭文件定義標準接口」,它們需要具有大量定義的特定於平臺的頭文件,才能使QtGlobal發揮作用。 – SigTerm

相關問題