android源码编译设置c 编译器-vscode 一键配置C/C++多个C和CPP文件编译和任务

vscodecmake配置及C/C++环境配置原理

vscode 一键配置配置C/C++/Cmake/make调试环境及配置原理

搜索了很多教程,发现要么是教程太老了,给的配置信息中的一些参数不能再用了,要么就是直接把自己的配置信息扔掉了。 不知道从哪里来的,也不能直接使用。 我这个新手,不知道从哪里开始,所以尝试整理一下,以帮助像我这样刚入门的新手。

对于每次都配置麻烦的人来说,下面的文章提供vscode下c/c++的一键cmake工程工具。 小工具生成项目修改完成后可以做成通用项目,直接备份一份。 创建公共项目后,您以后可以直接使用修改后的模板。 只需要修改项目名称即可。

原则

我认为最重要的是我们需要了解每个配置文件用途以及vscode如何使用它。 明白了这一点,你就能更清楚如何改参数、改哪些参数,而不是依赖别人。 配置文件无法启动

本文的重点也是为了让不懂的小伙伴知道如何更改这个配置。 了解之后,同样的原理也适用于配置其他语言。 文章中的配置更多的是参考

配置文件的基本原则:

vscode中与代码运行和调试相关的两个最基本的配置文件是tasks.json和launch.json文件(这两个文件通常位于vscode当前打开的文件夹下的.vscode文件夹中,两者都不能自动创建android源码编译设置c 编译,只要位置正确就会生效)。

launch.json:这个配置文件告诉vscode如何开始调试你的代码程序包括你的程序在哪里,用什么工具来调试,调试时需要传递给调试工具什么参数等。

tasks.json:此配置文件用于执行计划任务例如,如果在调试之前更改了代码,则必须在调试之前重新生成新程序。 然后你可以配置它告诉vscode如何重新调试它。 生成这个新程序。 (task.json不是必要文件,比如python调试,所以不需要提前编译)

vscode是先运行tasks.json任务,然后运行launch.json。

解释一点:vscode调用任务是根据label标签标识的(文章旁边有解释)。

"lable": "startRun"

那么启用这个任务就是启用startRun。

具体配置

我这里的配置没有使用VS。 我使用跨平台 g++ 和 gcc。 在 Windows 中,已安装 MinGW。 我使用 MinGW64(gcc 版本 8.1.0 x86_64)。

如果您只运行单个 C/C++ 文件

直接安装C++插件后,就可以编写代码并直接运行。 (更新于2020年12月9日)

点击右侧扩展商店,搜索c++。

如果有多个文件或项目文件

如果你编写的代码有多个文件,或者使用第三方库时有多个代码文件,这里介绍如何使用makefile创建程序。

Makefile用于组织管理不同文件的编译和链接顺序。 可以简单理解为gcc/g++命令前面的一大堆参数都放在这里。 无需每次都手动输入。 cmake用于生成makefile,因为makefile依赖于手工编写也很麻烦。

主意

1.cmake生成makefile

2.make编译

3、调试

当然,里面的步骤是在tasks.json中配置并手动执行的。

上面的make命令是MinGW安装目录bin目录下的mingw32-make.exe。 在tasks.json 中配置此命令。

1.首先查看launch.json文件。 这个文件的基本框架是由vscode手动生成的。 具体方法是:菜单栏==>运行==>打开配置文件。 您也可以手动创建它。 上面有说明。 只需填写下面的内容即可。

笔记中部例子来自:这里

{
    // 使用 IntelliSense 了解相关属性
    // 悬停以查看现有属性的描述
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++.exe - 生成和调试活动文件",
             // type 告诉vscode编译器的类型,我用的MinGW64也就是g++,这里是cppdgb
             // 这个是规定的,不是随便写,比如msvc编译器就是cppvsdbg
            "type": "cppdbg", 
            "request": "launch",
            // program 这个是你的可执行程序位置,这里可以根据自己的tasks.json生成
            // 程序的位置自定义修改,等会参照后面的tasks.json内容
            "program": "${workspaceFolder}\build\${workspaceRootFolderName}.exe",
            // ${xxxx}是vscode内置变量,可以方便获取到需要的路径或者文件名,
            // 具体什么变量参考别人的博客
            // 这里列举一部分
            // ${workspaceFolder} :表示当前workspace文件夹路径,也即/home/Coding/Test
			// ${workspaceRootFolderName}:表示workspace的文件夹名,也即Test
			// ${file}:文件自身的绝对路径,也即/home/Coding/Test/.vscode/tasks.json
			// ${relativeFile}:文件在workspace中的路径,也即.vscode/tasks.json
			// ${fileBasenameNoExtension}:当前文件的文件名,不带后缀,也即tasks
			// ${fileBasename}:当前文件的文件名,tasks.json
			// ${fileDirname}:文件所在的文件夹路径,也即/home/Coding/Test/.vscode
			// ${fileExtname}:当前文件的后缀,也即.json
			// ${lineNumber}:当前文件光标所在的行号
			// ${env:PATH}:系统中的环境变量
            "args": [], 
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            // 调试器的路径
            "miDebuggerPath": "D:\program\mingw64\bin\gdb.exe",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            // preLaunchTask 表示在 执行调试前 要完成的任务
            // 比如这里 要完成 makeRun 这个tasks任务(重新生成程序)
            // 这里的 makeRun 是 tasks.json 中 lable 标记的任务名称
            "preLaunchTask": "makeRun",
        }
    ]
}
// 上面没有注释的部分基本都是默认生成的,可以不用更改的部分

2.我们再看一下tasks.json文件

任务中可以有多个任务,保存在列表中,可以根据自己的需要添加删除

{
    "tasks": [
        {
            // 任务一: 创建 build 文件夹
            "type": "shell",
            "label": "CreateBuildDir", // lable 标记任务名称
            "command": "mkdir",  // 命令
            // 传给上面命令的参数,这里是传给 Unix 系统的参数,windows下稍有不用,下边
            "args": [
                "-p",
                "build"
            ], 
            "windows": {
                "options": {
                    "shell": {
                        "executable": "powershell.exe"
                    }
                },
                "args": [   // 对于windows系统,传的参数
                    "-Force",
                    "build"
                ]
            },
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "problemMatcher": [
                "$gcc"
            ],
        },
        // 任务二: Cmake
        // 在 build 文件夹中调用 cmake 进行项目配置
        // 如果想配置比如 release 还是 debug 可以添加参数或者在
        // CMakeLists.txt中设置也行
        {
            "type": "shell",
            "label": "cmakeRun", // 给这个任务起个名字
			// 这里的cmake,用我后面小程序创建的结果填的是全路径,
			// 命令写全路径,则路径中不能包含空格
			// 如果你添加了环境变量,那么直接填写命令即可,也不会有
			// 路径是否包含空格的问题(下面的命令同理)
            "command": "cmake",
            "args": [
            	"-DCMAKE_MAKE_PROGRAM=E:\Resource\mingw64\bin\mingw32-make.exe", // MinGW目录下bin目录下的mingw32-make.exe
                "-G",
                // 不使用-G "Unix Makefiles" 参数可能会编译成了VS用的工程文件
                // 之所以三个斜杠,是因为vscode终端自己还要转义一次
                // 2021-01-21更新:我在32位的win7上发现,vscode自己又不转义了
                // 所以如果以下三个斜杠不行的话,大家手动改成一个斜杠就好,即"Unix Makefiles"
                // 后面我给的小程序默认写的是3个
                "\"Unix Makefiles\"",  
                "../"  // ../ 表示build文件夹的上级目录,CMakeLists.txt就放在上级目录中
            ],
            "options": {
                "cwd": "${workspaceFolder}/build"
            },
            "dependsOn":[
                "CreateBuildDir"  // 表示在 创建目录 任务结束后进行
            ]
        },
        // 任务三: make编译
        {
            "type": "shell",
            "label": "makeRun",
            "command": "mingw32-make",  // 这个也是MinGW目录下bin目录下的mingw32-make.exe,如果添加了环境变量,这里直接写mingw32-make.exe
            "args": [],
            "options": {
                "cwd": "${workspaceFolder}/build"
            }, // 注意这里是编译到了项目文件夹下的 build 文件夹里面,这里就解释了
            // 为什么 launch.json 中 program 路径要那么设置了。
            "dependsOn":[
                "cmakeRun"  // 表示在Cmake任务结束后进行
            ]
        },
    ],
    "version": "2.0.0"
}

配置完成后,就可以享受编写代码的乐趣了。

注:本文配置的环境如下。 如果vscode打开的文件夹是项目的根文件夹,那么调试完后,会在根文件夹下创建一个build文件夹android源码编译设置c 编译器,cmake、make之后形成的文件都会存放在里面。 cmake使用的CMakeLists.txt(可以在vscode中安装Cmake插件,有两个,可以提示你如何写这个文件,具体教程可以百度找到,基本用法很简单)应该放在项目根目录下。

个人的例子:

1.我的目录是这样的。 我的项目名称是CPP(其实是根目录的名称),然后内容就符合注意事项了。

2.这是我的CMakeLists.txt示例

3.这是我开始调试后的终端输出

4. 多了一个build文件夹

5.结果

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 源码编译 android源码编译设置c 编译器-vscode 一键配置C/C++多个C和CPP文件编译和任务 https://www.wkzy.net/game/201750.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务