VSCode 的C++编译

这篇具有很好参考价值的文章主要介绍了VSCode 的C++编译。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0. 参考文档

0.1. 官方参考

由于C++在不同平台上编译使用的编译器不同,所以我们先将官网针对不同平台的编译文档摘录出来,以便大家参考:

0.0.1. Linux平台使用GCC

参考: https://code.visualstudio.com/docs/cpp/config-linux

0.0.2. Windows平台
0.0.2.1. 在常规环境中使用MinGW

参考: https://code.visualstudio.com/docs/cpp/config-mingw

0.0.2.2. 在WSL里面使用GCC

参考: https://code.visualstudio.com/docs/cpp/config-wsl

0.0.3. Mac平台使用

参考: https://code.visualstudio.com/docs/cpp/config-clang-mac

1. 配置文件

一个很好的参考文档: https://www.zhihu.com/question/30315894/answer/154979413

2. c_cpp_properties.json

2.1. 自动生成该配置文件

使用快捷键ctrl+shift+P打开Command Palette,输入C++, C/C++: Edit configurations(JSON)
VSCode 的C++编译

可以生成c_cpp_properties.json, 并自动进入该文件, 下面是Mac中生成的配置文件:

{
    "configurations": [
        {
            "name": "Mac",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [],
            "macFrameworkPath": [],
            "compilerPath": "/usr/local/bin/gcc-11",
            "cStandard": "gnu17",
            "cppStandard": "gnu++17",
            "intelliSenseMode": "macos-gcc-x64"
        }
    ],
    "version": 4
}

2.2. 配置文件介绍

先看官网的介绍:https://code.visualstudio.com/docs/cpp/c-cpp-properties-schema-reference

官网的示例配置:

 {
  "env": {
    "myDefaultIncludePath": ["${workspaceFolder}", "${workspaceFolder}/include"],
    "myCompilerPath": "/usr/local/bin/gcc-7"
  },
  "configurations": [
    {
      "name": "Mac",
      "intelliSenseMode": "clang-x64",
      "includePath": ["${myDefaultIncludePath}", "/another/path"],
      "macFrameworkPath": ["/System/Library/Frameworks"],
      "defines": ["FOO", "BAR=100"],
      "forcedInclude": ["${workspaceFolder}/include/config.h"],
      "compilerPath": "/usr/bin/clang",
      "cStandard": "c11",
      "cppStandard": "c++17",
      "compileCommands": "/path/to/compile_commands.json",
      "browse": {
        "path": ["${workspaceFolder}"],
        "limitSymbolsToIncludedHeaders": true,
        "databaseFilename": ""
      }
    }
  ],
  "version": 4
}

每个字段,官网已经有详细的介绍,我就不再摘录,只是根据自己的理解的介绍一下。
整个配置文件可以分成三大部分:

  • “env”: 用来配置各种环境变量(类似Linux的export了一大堆变量),这些环境变量不止在这个文件中可以使用,在其他的配置文件中也可以调用
  • “configurations”: 定义各种配置的细节(这部分是我们需要重点关注的)
  • “version”: 版本信息,不是很重要
2.2.1. 介绍“configurations”部分
  • name: 我们的配置文件可能有多个,所以每个配置文件都有一个友好的标识,也就是“name”字段,可以帮我们在其他地方选择到底我们需要的是那个配置文件
  • intelliSenseMode: 告诉VSCode当前配置想要模拟的目标架构和编译器,以便VSCode的C++的插件可以提供正确的IntelliSense,并反映pointer、size_t、long等数据类型的正确大小。通常,不同平台采用不同的值:
    • windows平台通常采用: msvc-x64
    • Linux平台通常采用: gcc-x64
    • Mac平台通常采用: clang-x64
  • compilerPath: 编译器路径, 在上面的例子中,我们使用了mac里面的clang编译器。 如果你自己的编译器在别的路径下,可以将这个配置改为对应的路径。当VSCode 知道在哪儿可以找到这些文件时候,它可以提供智能补全跳转定义、导航等功能。
  • compilerArgs: 【可选】编译器参数, 如果我们编译的时候需要增加参数,可以通过这个字段来进行设置
  • includePath: 制定需要搜索的头文件路径,注意, 在这些路径上搜索不是递归的。如果想要递归,可以在目录后加上“**”符号,以明确告知VSCode进行递归搜索。
    • 举例: ${workspaceFolder}/**将搜索${workspaceFolder}以及所有子目录。
    • 举例: ${workspaceFolder}/将搜索${workspaceFolder}目录,不会搜索子目录
  • forcedInclude: 【可选】在处理源文件中的任何其他字符之前应包含的文件列表。文件按列出的顺序包含。
  • cStandard: 使用的C标准
  • cppStandard: 使用的C++标准

3. 配置编译器

3.1. 自动扫描生成Cmake的工具链

打开命令面板(Ctrl+Shift+P), 输入“Cmake”, 选择【Cmake: Configure】.
这时候会弹出很多编译器选项,如果在这里面有需要的编译器,选择即可。如果没有,可以点击【[Scan for kits]】。
扫描的结果会存放在~/.local/share/CMakeTools目录下,通常这个目录下有两个文件:

  • cmake-tools-kits.json
  • log.txt

我们需要关注的是cmake-tools-kits.json文件,内容类似:

[
  {
    "name": "Clang 13.0.0 x86_64-apple-darwin21.3.0",
    "compilers": {
      "C": "/usr/bin/clang",
      "CXX": "/usr/bin/clang++"
    }
  },
  {
    "name": "Clang 13.1.6 x86_64-apple-darwin21.6.0",
    "compilers": {
      "C": "/usr/bin/clang",
      "CXX": "/usr/bin/clang++"
    }
  },
  {
    "name": "GCC 11.3.0 x86_64-apple-darwin21",
    "compilers": {
      "C": "/usr/local/bin/gcc-11",
      "CXX": "/usr/local/bin/g++-11"
    }
  }
]

这个文件的作用就是: 记录VSCode发现的当前系统中有哪些编译器可供使用

我测试的是Mac电脑,同时电脑里面安装了GCC,所以显示的结果如上所述。如果你的电脑是Linux或者Windows,那么结果应该不同, 但是结构肯定类似。

3.2. 处理交叉编译(cross-compiling)问题

如果你想要在X86架构的电脑上编译ARM的二进制文件,肯定会用到交叉编译器,但是交叉编译器的路径通过上面的方式一般不能扫描到,需要人工添加。

微软官方说明: https://code.visualstudio.com/docs/cpp/configure-intellisense-crosscompilation

3.2.1. 创建编译器配置文件

我自己使用的方法如下, 为了说明配置逻辑,现在假设:

  • 我的交叉编译工具链路径为: /usr/arch/arm/host/rk_toolchain/
  • 我想要将这个编译器工具链命名为: “rk_corss_compiler”

在上一步介绍的cmake-tools-kits.json文件中, 我们将交叉编译器按照Json格式添加到文件末尾(注意:必须添加到文件末尾), 具体配置如下:

{
    "name": "rk_corss_compiler",
    "toolchainFile": "/usr/arch/arm/host/rk_toolchain/toolchain.cmake"
}

最后面的toolchain.cmake文件,通过名称就可以看到是一个工具链的Cmake说明文件,这个文件是我们创建的(文件名称可以随便起,但是后缀最好写为cmake),在下面会有说明。

3.2.2. 介绍上面说的toolchain.cmake文件

这里有我使用的一个toolchain.cmake文件,内容如下:

### toolchain.cmake ###

# this is required
# The name of the operating system for which CMake is to build
SET(CMAKE_SYSTEM_NAME Linux)

SET(RK_TOOLCHAIN_ROOT /usr/arch/arm/host/rk_toolchain/)

# specify the cross compiler
SET(CMAKE_C_COMPILER ${RK_TOOLCHAIN_ROOT}/bin/aarch64-linux-gcc)
SET(CMAKE_CXX_COMPILER ${RK_TOOLCHAIN_ROOT}/bin/aarch64-linux-g++)

# where is the target environment
# CMAKE_FIND_ROOT_PATH: This variable is most useful when cross-compiling. 
SET(CMAKE_FIND_ROOT_PATH  ${RK_TOOLCHAIN_ROOT})

# search for programs in the build host directories (not necessary)
# detail URL: https://cmake.org/cmake/help/latest/variable/CMAKE_FIND_ROOT_PATH_MODE_PROGRAM.html?highlight=cmake_find_root_path_mode_program
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)

# for libraries and headers in the target directories
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

4. 任务(tasks)

参考文档: https://code.visualstudio.com/docs/editor/tasks

5. 遇到问题

5.1. 在mac中使用gcc编译报错,错误1

错误信息:
VSCode 的C++编译

解决办法:
导入环境变量:

export	CPATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include

5.2. 在mac中使用gcc编译报错,ld错误

错误信息:

ld: library not found for -lSystem

解决办法:
编译的时候加入:

-L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib

如下:
VSCode 的C++编译文章来源地址https://www.toymoban.com/news/detail-402277.html

到了这里,关于VSCode 的C++编译的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ElementPlusError:[ElPagination] 你使用了一些已被废弃的用法,请参考 el-pagination 的官方文档

    💂 个人网站: 【紫陌】【笔记分享网】 💅 想寻找共同学习交流、共同成长的伙伴, 请点击【前端学习交流群】 今天在做项目的时候突然发现控制台有一个警告但是不影响使用,之前还没有的,今天竟然出现。我就怀着好奇看看到底是什么问题。我用的是ElementPlus。 控制台

    2023年04月20日
    浏览(39)
  • 最新Elasticsearch8.4.3 + Kibana8.4.3在云服务器Centos7.9安装部署(参考官方文档)

      最近笔者学习Elasticsearch,官方最新稳定版为 Elasticsearch-8.4.3,想在云服务器上Centos7.9搭建。搭建之路坑多路少啊(指网上的博文教程五花八门,基本都是ES7版本居多,ES8有少数,各种配置参数一头雾水,细节不多说,照搬了踩坑跌得头破血流),对小菜的我来说,简直要

    2024年02月02日
    浏览(60)
  • 写最好的Docker安装最新版MySQL8(mysql-8.0.31)教程(参考Docker Hub和MySQL官方文档)

       MySQL官方安装包下载地址:   https://dev.mysql.com/downloads/mysql/      Docker Hub官方网址:   https://hub.docker.com/     如果需要了解Centos7下MySQL5.7最新版的安装部署,可参考教程【最新MySQL-5.7.40在云服务器Centos7.9安装部署)】。      本教程是笔者参考Docker Hub和MySQL官

    2024年02月01日
    浏览(43)
  • Visual Studio中C++部分的官方文档链接【微软(Microsoft)所有产品的官方文档链接】

    目前(2022年07月),微软官方网站上关于Visual Studio的文档,最老的版本也是VS2015了,如下图所示: 微软所有产品的文档目录: 中文版:https://docs.microsoft.com/zh-CN/documentation/ 英文版:https://docs.microsoft.com/en-us/documentation/ Visual Studio中C++部分的官方文档: 中文版:https://docs.microso

    2024年02月07日
    浏览(65)
  • VSCode 的C++编译

    0.1. 官方参考 由于C++在不同平台上编译使用的编译器不同,所以我们先将官网针对不同平台的编译文档摘录出来,以便大家参考: 0.0.1. Linux平台使用GCC 参考: https://code.visualstudio.com/docs/cpp/config-linux 0.0.2. Windows平台 0.0.2.1. 在常规环境中使用MinGW 参考: https://code.visualstudio.co

    2023年04月08日
    浏览(21)
  • VSCode编译github上面的C++项目

    在这里下载对应的版本 https://cmake.org/download/ 测试下载的是这个 下载完成后安装,安装都比较简单 例如:下载这个项目 https://gitcode.net/mirrors/zrax/pycdc?utm_source=csdn_github_accelerator 注意项目中已有CMakeLists.txt这个文件 VScode设置中或者快捷键Ctrl+Shift+P打开命令面板 面板中输入Cmak

    2024年02月12日
    浏览(39)
  • linux | vscode | makefile | c++编译和调试

    简单介绍环境: vscode 、centos、 gcc、g++、makefile 简单来说就是,写好项目然后再自己写makefile脚本实现编译。所以看这篇博客的用户需要了解gcc编译的一些常用命令以及makefile语法。在网上看了很多教程,以及官网也看了很多次,最后自己一点多一点摸索,有的些许收获。 首

    2024年02月15日
    浏览(33)
  • 使用Microsoft C++编译器配置VSCode

    在本教程中,您将在 Windows 上使用 Microsoft Visual c++ 编译器和调试器配置 Visual Studio Code 。 要成功完成本教程,您必须完成以下步骤: 1.安装Visual Studio Code。 2.安装VS Code的C/ c++扩展。你可以通过在Extensions视图中搜索’c++’ (Ctrl+Shift+X) 来安装C/ c++扩展。 3.安装Microsoft Visual c++ (

    2024年02月05日
    浏览(51)
  • 【 VScode上配置c++编译环境出现报错】

    VScode上配置c++编译环境出现报错: 在写好launch.json代码、tasks.json代码、c_cpp_properties.json代码之后,点击运行第一个“HelloWorld.cpp”代码,却出现“No such file or directory”弹窗报错 ` 如下图报错提示: 出现“No such file or directory”弹窗的原因是编译器无法找到所需的头文件或库文

    2024年02月07日
    浏览(44)
  • ubuntu 上vscode使用cmake编译运行c++程序

    参考:ubuntu 上vscode使用cmake编译运行c++程序_vscode ubuntu运行c++程序_SCH0的博客-CSDN博客 文章是对官方过程的翻译: Get started with CMake Tools on Linux

    2024年02月07日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包