首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >设置VSCode以包括/排除用于C++智能感知的文件夹

设置VSCode以包括/排除用于C++智能感知的文件夹
EN

Stack Overflow用户
提问于 2022-02-16 11:45:58
回答 1查看 1.6K关注 0票数 1

我经常有一个带有CMake的项目来管理我的构建系统。因此,您可以想象,我会有一个负载的第三方头,我自己的头在我的安装文件夹。

这是非常麻烦的,当我有两个副本的相同的标题:一个在我的安装文件夹(旧的)和一个我正在修改现在(新的)。当发生这种情况时,intellisense有时会不知道哪个是正确的,并且可能会认为我的函数签名是错误的(因为它是在查看旧版本)。

当您试图使用Ctrl +左键进入一个类/函数以便快速导航到它的定义时,也会出现同样的问题。它可能会指向错误的文件(在安装文件夹中),因此修改该文件不会在项目中产生影响(因为“真实”文件将很快修改旧文件)。

关于安装文件夹中的include文件夹结构的示例:

代码语言:javascript
运行
复制
- boost
    |- fake_boost_header.h
- eigen
    |- not_reap_eigen_header.h
- abseil
    |- real_fake_abseil_header.h
- my_header.h
- my_other_header.h

我尝试了以下解决方案,但似乎不起作用:

让includePath in c_cpp_properties.json成为install/include/<all_third_party_folder>

任何想法都是欢迎的。我非常乐意使用第三方插件.

EN

回答 1

Stack Overflow用户

发布于 2022-05-18 15:34:23

在我看来,您的install/include/<...>解决方案与您想要的相反,因为它将保证VS代码首先在您的install文件夹中找到标头。您可能需要include/**,以便搜索include文件夹中的所有子目录,前提是需要编辑标题。

我不知道为什么要VS Code知道安装文件夹,因为这是构建/代码生成过程的输出。如果您需要安装文件夹中的第三方代码版本,请让您的构建过程从源代码树的某个地方复制它们,这样您就不会在同一个目录中混合(外部)源代码和生成的代码。也就是说,将第三方代码本身视为源代码,即使您使用它的唯一方法是将其复制到install文件夹中。然后可以将install文件夹添加到.vscode/settings.json中排除的文件夹列表中,以避免VS代码搜索这些目录:

代码语言:javascript
运行
复制
{
    ...
    "C_Cpp.files.exclude": {
        "install/**": true,
        ...
    },
    "files.watcherExclude": {
        "install/**": true,
        ...
    },
    "search.exclude": {
        "install/**": true,
        ...
    },
    "files.exclude": {
        "install/**": true,
        ...
    },
    ...
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71141265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档