ESP32爬坑之旅①——在Ubuntu下使用vscode进行代码编译

1.头文件路径配置

当我们在Ubuntu中用vscode打开ESP32的例程时,发现头文件处有红色的波浪线,不能够进行正常的编译,这时候怎么办呢?

红色波浪线
这是因为我们没有配置头文件的路径,所以第一步呢,我们需要配置下整个工程的头文件路径。又因为SDK和编译器代码是分开的,所以我们需要手动指定路径头文件。
打开vscode,先Ctrl+Shift+P打开命令,也可以在左上角点击查看-命令面板打开命令。然后输入configuration,点击第一个即可。
configuration
接着呢,在includePath中添加ESP32头文件的具体路径,我的文件路径为

/home/eric/esp/esp-idf/**

更改代码如下:

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "/home/eric/esp/esp-idf/**"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "clang-x64"
        }
    ],
    "version": 4
}

此时,点击保存后,发现红色的波浪线已经完全消失了!说明我们的头文件已经配置成功了!好的开始是成功的一半!
红色波浪消失

2.使用快捷键进行代码编译

我们在使用keil时,编译51、stm32的代码十分方便,那么esp32能不能以快捷的方式进行一键编译呢?当时是行的!
第一步,先进行任务配置。
首先按下Ctrl+Shift+P打开命令窗口,输入task,这时会出现如下选项:
任务配置
我们选择第一个,然后选择tasks.json文件,选择others,然后用如下代码对源代码全部进行替换。

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build app", // f5
            "type": "shell",
            "command": "cd ${fileDirname} && cd ../ && make -j8",
            "group": {
                "kind": "build",
                "isDefault": true
            }
        },
        {
            "label": "flash app", // f6
            "type": "shell",
            "command": "cd ${fileDirname} && cd ../ && make -j8 flash"
        },
        {
            "label": "monitor", // f7
            "type": "shell",
            "command": "cd ${fileDirname} && cd ../ && make monitor"
        },
        {
            "label": "clean app", // f8
            "type": "shell",
            "command": "cd ${fileDirname} && cd ../ && make clean",
        },
        {
            "label": "erase flash", // f9
            "type": "shell",
            "command": "cd ${fileDirname} && cd ../ && make erase_flash",
        },
        {
            "label": "menuconfig", // f10
            "type": "shell",
            "command": "cd ${fileDirname} && cd ../ && make menuconfig"
        },
    ]
}

第二步进行快捷键配置
首先按下Ctrl+Shift+P打开命令窗口,输入preference,选择第一个,然后打开keybindings.json。
快捷键配置
然后用如下代码进行全部替换

[
    {
        "key": "f5",
        "command": "workbench.action.tasks.runTask",
        "args": "build app"
    },
    {
        "key": "f6",
        "command": "workbench.action.tasks.runTask",
        "args": "flash app"
    },
    {
        "key": "f7",
        "command": "workbench.action.tasks.runTask",
        "args": "monitor"
    },
    {
        "key": "f8",
        "command": "workbench.action.tasks.runTask",
        "args": "clean app"
    },
    {
        "key": "f9",
        "command": "workbench.action.tasks.runTask",
        "args": "erase flash"
    },
    {
        "key": "f10",
        "command": "workbench.action.tasks.runTask",
        "args": "menuconfig"
    }
]

完成后点击保存,这个时候我们就可以在主函数界面选择相应的快捷键进行编译,下载,监控,擦除,配置等操作啦~

### VSCode 中 C++ 文件出现未定义标识符红色波浪线的解决方案 在使用 Visual Studio Code (VSCode) 编辑 C++ 文件时,如果遇到红色波浪线下划线并提示“未定义标识符”,这通常是由于 IntelliSense 配置不正确或环境设置问题引起的。以下是可能的原因以及对应的解决方法: #### 1. **IntelliSense 配置文件缺失** 如果项目的 `c_cpp_properties.json` 文件配置错误或者不存在,则可能导致 IntelliSense 无法识别某些头文件或库路径。 解决方案:手动创建或更新 `c_cpp_properties.json` 文件。可以通过以下方式完成: - 打开命令面板 (`Ctrl+Shift+P`) 并输入“C/C++: Edit Configurations (UI)”。 - 设置正确的编译器路径和包含目录(Include Directories)。例如,在 Linux 上可以指定 GCC 的安装路径 `/usr/bin/gcc` 或者 Windows 下 MinGW 的路径[^1]。 #### 2. **项目文件位置变更** 当前工作区中的源码被移动到其他目录后,可能会破坏原有的相对路径关系,从而导致 IntelliSense 报告错误。 解决办法:重新加载整个工程结构或将所有必要的依赖项复制回原始位置。另外也可以尝试删除 `.vscode` 文件夹下的缓存数据后再重启 IDE 来重建索引[^2]。 #### 3. **特定平台支持不足** 对于像 NodeMCU ESP8266 这样的嵌入式设备开发来说,默认情况下 VSCode 可能不会自动解析其专用 SDK 提供的些宏定义及特殊语法扩展,因此会出现大量假阳性警告消息。 处理措施:确保已安装最新版本 Arduino 插件,并调整 settings.json 添加额外参数以增强兼容性。比如增加自定义 includePath 和 define 值来匹配目标硬件特性[^3]: ```json { "configurations": [ { "name": "Win32", "includePath": [ "${workspaceFolder}/**", "path/to/esp8266/include" ], "defines": ["ARDUINO"], ... } ] } ``` 通过上述操作应该能够有效缓解大部分因误判而产生的红色下划线现象。当然实际应用过程中还需要结合具体情况进行灵活处理。 ```cpp // 示例代码片段展示如何验证基本功能是否恢复正常 #include <iostream> int main() { std::cout << "Hello, world!" << std::endl; return 0; // 此处应无任何红线标记 } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值