2014-10-01 275 views
4

我的應用程序包含多個子文件夾,可能會變得很深,例如,Visual Studio C++編譯器失敗,因爲包含文件名太長

library\management\security\descriptor\configurations 

(這只是一個虛構的例子)

如果我的應用程序的其他部分需要一個包含該文件夾的文件中寫入這樣的:

#include "library\management\security\descriptor\configurations\config.h" 

的問題是,如果包含此文件的文件也包含在相當深的路徑中,如下所示:

people\groups\interestgroups\manager.cpp 

而且我們的文件夾中籤出我們的項目:

E:\jenkins\workspace\application\release\flavour 

然後在Visual Studio編譯器(我們編譯使用/I.(斜線-I點)選項)首先會在此位置的文件:

E:\jenkins\workspace\application\release\flavour\people\groups\interestgroups\library\management\security\descriptor\configurations\config.h" 

,然後只在

E:\jenkins\workspace\application\release\flavour\library\management\security\descriptor\configurations\config.h" 

(此問題在http://msdn.microsoft.com/en-us/library/vstudio/36k2cdd4(v=vs.100).aspx描述)。 所以它堅持先在編譯文件所在的位置查看,然後只查看/I選項。

問題是,編譯器首先查找的地方會導致文件名太長(> 256個字符),編譯器會放棄。

有沒有辦法讓Visual Studio在包含路徑過長時不停止?最好不使用括號括號格式(#include <>)。

+1

一個解決方法是,你可以只添加的路徑,包括路徑列表文件。雖然 – gldraphael 2014-10-01 16:35:39

+1

@gldraphael可能沒有幫助,但如果我正確理解他,路徑位於包含路徑列表中。問題在於搜索到的第一個地方是include文件所在的目錄。顯然,VS試圖爲此使用絕對路徑名。 – 2014-10-01 17:27:37

+0

這個問題似乎是他們不打算解決的Visual Studio限制。我有一個可能的'可怕的'解決方案,但它可能會起作用。如果要將文件夾「E:\ jenkins \ workspace \ application \ release \ flavor」映射到驅動程序字母(如Z),然後將包含路徑設置爲「Z:\」。 – Chris 2014-10-01 17:36:05

回答

0

你可以只作出interestgroups文件夾只包含的config.h文件,你只包括interestgroups文件,並使用該文件

相關問題