2009-08-18 59 views
2

我在使用MSVC編譯器(來自Visual C++ express edition的編譯器)和qt 4.5.2開源的windows上使用QtCreator。使用MSVC Express的qmake中的頭文件依賴關係

當我在項目上修改標題並按下全部構建時,實際上沒有構建任何內容,僅當我修改.cpp文件時,修改後的cpp纔會被編譯。

這會導致每當我必須更改幾個.cpp文件使用的頭文件時,我必須重建一個完整的項目。有一種方法可以避免這種行爲?

在此先感謝

回答

1

您的頭文件列在您的.pro文件的HEADERS變量中嗎?我認爲在頭文件中列出頭文件也是需要在它們內部獲得MOC的類。 ** Nevermind,我用Qt 4.5.2 SDK在Linux上測試了Qt Creator 1.2.1,當我觸摸一個頭文件時,它所依賴的cpps被重新編譯,不管標題是否列在HEADER列表中。

在qmake生成的Makefile中,包含有問題的h文件的我的cpp文件有一個明確列出h文件作爲依賴項的規則。不知道qmake如何做到這一點。我建議尋找爲你生成的makefile qmake,看看你的一個cpp文件的規則是什麼樣的。 [/編輯]

[編輯再次,現在下車話題] **通常在化妝基礎構建系統調用gcc的,你問的gcc做它產生由CPPS包含的頭文件的依賴性信息你,用-M標誌。 cl.exe(微軟C++編譯器)不會產生一個.d文件,不管你問得多好,所以使用它的/ showincludes選項有點常見,然後使用腳本解析輸出以將其轉換爲。因此make可以包含它(很多人跳過這一步,並且在使用cl.exe的基於make的版本中沒有適當的依賴性檢查,因爲它是PITA的一種)。 不過,我不認爲qmake做類似的東西來獲得依賴信息,因爲qmake正在生成一個makefile,然後調用編譯器,在那一點上,依賴信息(至少在我看到的makefile中)是硬編碼的。 [/編輯] **

+0

非常感謝。 我會看看是否可以使用visual studio(從.pro文件生成vcproj)。 (VS似乎正確處理依賴關係) – Federico 2009-08-19 17:54:48