我必须包含许多不同子目录下的头文件。在Visual Studio(我使用2005版本)中,是否有一种设置一个包含路径,以便Visual Studio也可以搜索头文件所在的子目录的方法?
我必须包含许多不同子目录下的头文件。在Visual Studio(我使用2005版本)中,是否有一种设置一个包含路径,以便Visual Studio也可以搜索头文件所在的子目录的方法?
为了解决一个包含问题,将文件夹搜索路径设置在Visual Studio设置中通常从设计角度来看并不是一个好主意,因为您的代码会在具有不同目录结构的不同计算机上变得不太可移植。
我的建议是为您的代码定下一个组织形式,使子目录的相对路径(相对于包含代码)固定:
#include "subdirectory/somefile.h"
。这样做的额外好处是能够看到您的Solution中的哪个文件夹包含该文件-当您试图找到正确的路径或确定文件用途时,这通常很有用。
我发现在大多数情况下,包括在MSVC中,我可以通过使用SUBST命令的巧妙技巧来缩短路径长度。 我将展示一个缩短默认继承的C ++包含路径的示例,但您也可以为项目相关的包含路径执行此操作。 首先创建一个或多个类似以下内容的批处理文件(并从Windows资源管理器或命令行运行它们):
MDrive.bat:
subst M: /D
subst M: "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC"
WDrive.bat:
subst W: /D
subst W: "C:\Program Files (x86)\Windows Kits\8.1\Include"
... This is just and example. You would do this for your
project related include directories.
对于较长的路径,您可以创建多个这些。在上面的情况下,我仅缩短了MSVC默认使用的标准继承路径。顺便说一句,Subst命令可以在没有管理员权限的情况下运行,但不要占用现有的物理或映射驱动器字母(我不确定会发生什么 - 我现在不想测试它)。
这一步是可选的。我在MSVS 2010+中添加了一个自定义属性表。顺便说一句,如果您不知道自定义属性表,那么您应该了解一下。请参见【属性页 (Visual C++)】。 视图-其他窗口-属性窗口,在“属性管理器”中右键单击项目,添加新的项目属性表。 在用户宏下,添加一个宏,例如MyProjectIncludePaths并设置值(在本例中)为
M:; M:\atlmfc\include; W:\um; W:\shared; W:\winrt
$(VC_IncludePath); $(WindowsSKD_IncludePath)
该语句经过宏展开后被翻译为
C:\Program Files (x86)\Windows Kits\8.1\Include;C:\Program Files (x86)\Windows Kits\8.1\Include\atlmfc\include;C:\Program Files (x86)\Windows Kits\8.1\Include\um;C:\Program Files (x86)\Windows Kits\8.1\Include\shared;C:\Program Files (x86)\Windows Kits\8.1\Include\winrt
使用此选项将所有子目录包含在包含路径中
${workspaceFolder}
${workspaceFolder}/**
launch.json
文件配置,而他要求的是 Visual Studio。在这里,workspaceFolder
将会是 $(SolutionDir)
或者类似的内容,具体取决于项目的架构。 - NoxFly我认为使用递归搜索包含文件会带来比解决问题更多的问题,例如包含错误的文件或版本。毕竟,在设置项目时,您必须定义正确的目录。