2014-10-01 282 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文件,并使用该文件

相关问题