Visual Studio 2015 中的递归包含路径

Posted

技术标签:

【中文标题】Visual Studio 2015 中的递归包含路径【英文标题】:Recursive Include Paths in Visual Studio 2015 【发布时间】:2017-02-20 20:46:55 【问题描述】:

所以我是使用 Visual Studio 的新手,我正在尝试创建一个项目来编译我现有的程序。该程序已经在 macOS 上使用 Xcode 进行编译。项目的文件夹结构如下:

main folder
  src
    some code here
    Debug
      some code here
    Utility
      some code here
      Special Utility Folder
    Rendering
      some code here
      Rendering Utils
...

当我尝试将项目加载到 Visual Studio 中时,我收到很多错误,提示找不到头文件。我做了一些调查,似乎包含路径不是递归的。因此,要包含来自 src/Utility 的文件,我必须编写

#include "Utility/header.hpp"

但是项目中使用的所有代码都包含like

#include "header.hpp"

有没有办法让它在 Visual Studio 中工作?

附:手动添加所有文件夹作为它们自己的包含路径是可行的,但随着项目的增长,维护起来会很痛苦,特别是因为我的大部分工作都将在 Xcode 中完成

【问题讨论】:

包含路径对于我所知道的任何 C++ 编译器都不是递归的。 如果我知道为什么它在 X-Code 下有效,那就危险了。他们可能正在做一些看不见的“有用”的事情。 @user4581301 这是我的猜测 【参考方案1】:

您可以在项目属性中设置所有文件夹的包含路径(它不是递归的):

访问项目配置:

    右键单击项目,然后选择属性。 选择配置属性->C/C++->常规。 在其他包含目录下设置路径: 即:.DebugUtility 等。

也许您还可以使用 cmd 工具在 txt 文件中创建包含路径(即:IncludePath.txt)。 在该文件中,您可以添加包含文件夹:

/I "."
/I ".."
/I ".\Debug"
/I ".\Utility"

然后在 Additional Include Directories 下设置路径:

@IncludePath.txt

【讨论】:

手动添加每条路径确实有效,正如我在原始问题中所述,但我正在寻找可能更优雅的解决方案 IncludePath.txt 变通办法是否真的有效(VS 2015)?我找不到任何关于它的文档... 我知道它很旧,但我遇到了这个并想我会说:是的,它确实有效。您可以使用“cl @”将命令行选项文件提交给 CL 编译器,如下所述:docs.microsoft.com/en-us/cpp/build/reference/… ...虽然这适用于任何命令行开关,正如 Rama 所建议的,但它是封装大量“/I”包含目录指令的好方法。因此,根据 Rama 的示例,您还可以将“@IncludePath.txt”添加到:项目 > 属性 > 配置属性 > C/C++ > 命令行 > 附加选项

以上是关于Visual Studio 2015 中的递归包含路径的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 中的源文件包含

.cpp 文件中的 Visual Studio 2015 IntelliSense #included 作为标头

在Visual Studio 2015中访问资源图像 - 特别是位置路径

Visual Studio 2015自定义安装不包括Visual Basic?

Visual Studio 2015 TFS .tfignore 文件

Visual Studio 2015 c++ 无法打开包含文件或源文件