2017-03-11 83 views
1

qmake的默認行爲是添加項目的根路徑以包含路徑。在Makefile中,它會生成如下內容:如何從包含路徑中刪除項目的根目錄qmake

INCPATH  = -I..\bug -I. -I..\..\Qt\Qt5.8.0\5.8\mingw53_32\mkspecs\win32-g++ 

其中「bug」是項目的名稱。我不想要「 - 我」。部分。我如何在.pro文件中刪除這個?

我想:

INCLUDEPATH -= "." 

但它改變不了什麼。

詳細解釋:我的項目在Linux上編譯得很好,但在Windows(mingw)上編譯失敗。經過深入研究,我意識到在標準C++庫(string.h)中包含了名爲「process.h」的文件。問題是在我的項目中有一個名字完全相同的文件。反過來,我項目中的文件被包含到標準庫的頭文件(!!)中。該行爲導致字符串頭文件無法編譯。

+0

一個明顯的解決方法就是重命名'process.h'文件在您的項目。 –

+1

@KubaOber它不是任何解決方案。這是一種解決方法。 – jaskmar

+0

這是有爭議的。您也會在其他構建系統上反覆出現該問題。一般來說,在您的項目中有任何與任何常用標準標題相同的文件都是非常糟糕的主意。通過專注於qmake你可以在路上踢球:) –

回答

1

有appriopriate配置選項:

CONFIG += no_include_pwd 
+0

嗨,感謝您研究並提交「無記錄」的QTBUG。它確實有效,但我很困惑我的項目正在發生什麼。當這個項目被稱爲「bug」時,我原本是這個INCPATH:-I ../ bug -I ../ bug/src -I ../ bug -I。在添加CONFIG行後,我得到這個:-I ../ bug/src -I ../ bug任何想法爲什麼我最初有多個「-I ../ bug」路徑?爲什麼在添加CONFIG選項後它仍然在那裏(一次)?我可能是錯的,但是「-I ../ bug」和「-I」是一樣的,不是嗎? – FrozenTarzan

+0

@FrozenTarzan我沒有看到你的* .pro文件 - 所有的答案應該在裏面。考慮提出新的問題:) – jaskmar

+0

當然,但我想知道你是否還有「後退一個目錄並轉發到項目目錄」包含修改後的路徑。我只是想知道似乎來自某些命令的「-I ../ project_dir」路徑。如果你告訴我你在改變之後沒有其他人,並且擺脫了「我」。和「-I ../ bug」,然後我打開一個新的問題:-) – FrozenTarzan

相關問題