Visual C++:无法“转到文档”,尽管文件是项目的一部分

Visual C++: cannot "Go To Document", although file is part of the project

提问人:MattTT 提问时间:6/22/2023 更新时间:6/22/2023 访问量:28

问:

在一个空的 Visual Studio C++ 项目中,我添加了一个包含源文件和头文件的源文件树,只需将根目录拖放到 VS 解决方案资源管理器中的项目中即可。

当我在源文件中选择一个语句并在上下文菜单中选择“转到文档”时,我收到一条消息#include <mylib.h>

在当前源文件的目录或构建系统路径中找不到文件“mylib.h”

尽管该文件出现在项目树中的“头文件”下。


有趣的是,当我在同一个源文件中选择一个函数并在上下文菜单中选择“查找所有引用”时,我也从这个头文件 mylib.h(前向声明)中得到结果。


如何说服Visual Studio能够打开我项目中的所有头文件?

就我而言,它并不关心 VS 是否复制了每个源的真正有效包含目录列表。我只想使用 VS 作为源导航器。因此,将所有包含头文件的目录添加到项目的“包含目录”列表(或其他“构建系统路径”?)就足够了。
如何以最小的努力为复杂的源代码树实现这一点?

visual-studio visual-c++ 包括

评论

0赞 CodeManX 9/9/2023
对于具有 Conan 安装的依赖项的 CMake 生成的项目,我遇到了这个问题,除了“转到文档”之外,一切都正常工作(构建、调试、IntelliSense)。一年前似乎有人报告了解析Microsoft的相对路径的问题,并且至少有部分修复,但仅适用于 VS 2022(VS 2019 处于扩展支持状态,所以我想不再有修复):developercommunity.visualstudio.com/t/... - 但是不确定这是否是同一个问题。就我而言,.vcxproj中的所有路径都是包含目录的绝对路径
0赞 CodeManX 9/11/2023
如果您使用 CMake,我发现的解决方法是填充特定 CMake 目标的“外部包含目录”选项。在此示例中,我添加了 BZip2 include 路径,变量由 设置。这使得“转到文档”起作用,但我不知道这是否也会产生负面影响。请参阅 gitlab.kitware.com/cmake/cmake/-/issues/23834gitlab.kitware.com/cmake/cmake/-/issues/22163set_target_properties(myTarget PROPERTIES VS_GLOBAL_ExternalIncludePath "${BZIP2_INCLUDE_DIRS};$(VC_IncludePath);$(WindowsSDK_IncludePath);")${BZIP2_INCLUDE_DIRS}find_package()

答: 暂无答案