首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >includePath in c_cpp_properties.json不在C语言的VSCode中工作

includePath in c_cpp_properties.json不在C语言的VSCode中工作
EN

Stack Overflow用户
提问于 2020-04-07 12:02:06
回答 4查看 9K关注 0票数 5

我在VSCode中工作,在Ubuntu18.04上使用C/C++扩展。

我试图包含gmodule.h,它会在主文件的第2行(字符10 )引发错误gmodule.h: No such file or directory

因此,问题在于gmodule.h不是在/usr/include中,而是在/usr/include/glib-2.0中。意识到这一点,我将这个文件夹添加到includePath变量中的c_cpp_properties.json中。但是,它仍然会引发相同的错误。

当使用#include <glib-2.0/gmodule.h>而不是#include <gmodule.h>时,它确实有效,但这只会将问题转移到gmodule.h本身,因为存在于glib-2.0文件夹中的其他包含仍然不能在gmodule.h中工作。

总之,问题是添加到includePath中的c_cpp_properties.json不会改变任何事情,我想知道如何使它工作,因为我想使用gmodule。

c_cpp_properties.json:

代码语言:javascript
运行
复制
{
    "configurations": [
        {
            "name": "Linux",
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "clang-x64",
            "includePath": [
                "/usr/include/glib-2.0/*"
            ]
        }
    ],
    "version": 4
}

现在,我只是尝试包含gmodule.h,还没有对它做任何事情,所以这是我的主要文件:

代码语言:javascript
运行
复制
#include <stdio.h>
#include <gmodule.h>

int main() {
    printf("hai\n");
    return 0;
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-12-04 00:41:32

除其他外,c_cpp_properties.json控件中的intellisense包括文件。IDE和构建任务是独立的,因此在VS代码中配置和操作是独立的。

解决问题的方法是将包含路径添加到tasks.json文件中,如下所示:

代码语言:javascript
运行
复制
"args": [
        "-g",
        "${file}",
        "-o",
        "${fileDirname}/${fileBasenameNoExtension}",
        "--include-directory=/usr/include/glib-2.0/"
 ],
票数 8
EN

Stack Overflow用户

发布于 2021-06-11 04:35:46

我通过为IntelliSense添加glib的两条路径(由pkg-config报告),成功地使pkg-config工作

代码语言:javascript
运行
复制
$ pkg-config --cflags glib-2.0
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include

.vscode/c_cpp_properties.json

代码语言:javascript
运行
复制
{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "/usr/include/glib-2.0/**",
                "/usr/lib/x86_64-linux-gnu/glib-2.0/include/**"
            ],
            "defines": [],
            ...
        }
    ],
    ...
}
票数 1
EN

Stack Overflow用户

发布于 2022-01-24 16:09:07

对我来说,解决这个问题的方法是只键入没有/*或/**的文件夹路径,然后它会提示我如果我想为这个文件夹启用Intellisense,并且我允许它并且它工作了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61079599

复制
相关文章

相似问题

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