交叉编译的 IntelliSense
本文介绍如何配置 C/C++ 扩展,以便在 Visual Studio Code 中为不同于开发主机架构的架构进行编译时提供正确的 IntelliSense(例如,代码补全)。例如,当您的主机是 x64,但您正在为 Arm 编译时。
C/C++ 扩展不是编译器,它提供丰富的语言功能,例如语法突出显示和 IntelliSense。为了使扩展提供正确的 IntelliSense 建议并反映正确的数据类型大小,您需要配置 C++ 扩展来模拟目标架构。
这些配置设置存储在项目的 c_cpp_properties.json
文件中。要编辑此文件,请在 VS Code 中,从命令面板中选择“C/C++: 编辑配置(UI)”(⇧⌘P(Windows、Linux Ctrl+Shift+P))
IntelliSense 配置示例
以下显示了为面向 Linux Arm 的 Linux x64 主机配置 C/C++ 扩展。它配置了以下 IntelliSense 设置
- 编译器路径:扩展会在此位置查询您的编译器,以检索系统库和编译器定义。
- IntelliSense 模式:模拟目标架构和编译器,以便扩展可以提供正确的 IntelliSense 并反映正确的数据类型大小,例如
pointer
、size_t
、long
等。
至少,设置编译器路径和IntelliSense 模式可以为扩展提供足够的信息来模拟项目的目标架构,但是如果扩展能够根据从查询编译器路径返回的定义正确选择它,则可能不需要设置IntelliSense 模式。
编译器路径
设置为您用于构建项目的编译器的完整路径。
例如
IntelliSense 模式
设置为您正在使用的编译器的特定于体系结构的变体。
例如
包含路径
仅当您的程序包含不在工作区中或不在标准库路径中的头文件时,才需要修改包含路径。
C/C++ 扩展通过查询编译器路径指定的编译器来填充包含路径。如果扩展找不到目标系统库的路径,您可以手动输入包含路径
给定以上设置,您的 c_cpp_configuration.json
文件将类似于以下内容。您可以从命令面板中选择“C/C++: 编辑配置(JSON)”来打开它
{
"configurations": [
{
"name": "myConfigurationName",
"includePath": ["${workspaceFolder}/**"],
"defines": [],
"compilerPath": "/usr/bin/arm-none-eabi-g++",
"cStandard": "c11",
"cppStandard": "c++14",
"IntelliSenseMode": "gcc-arm"
}
],
"version": 4
}
后续步骤
- 有关 IntelliSense 配置的详细信息,请参阅自定义默认设置。
- 如果您在配置设置时遇到问题,请在GitHub 讨论中发起讨论,或者如果您发现需要修复的问题,请在GitHub 问题中提交问题。
- 浏览c_cpp_properties 架构。
- 查看C++ 扩展概述。