vscode c++开发配置

我原来使用的是Microsoft Visual Studio进行c++程序开发的,最近想试试用vscode来开发,vs毕竟太庞大了,vscode更轻便一些,使用过一段时间后,发现vscode还是不错的。

首选说明,vscode只是一个代码编辑工具,代码的编译和调试,还需要安装其他的编译调试工具,比如微软的MSVC,或者使用gcc+gdb,MinGW等等。这里贴一下官方的文档:

https://code.visualstudio.com/docs/languages/cpp --这个是vscode 做c++开发的总概括

https://code.visualstudio.com/docs/cpp/config-msvc --这个是vscode使用msvc的配置介绍,当然也可以配置MinGW,官方文档都有详细的介绍,文档写的真心不错

网上也有一些教程,最初我也是参照别人写的博客去配置的,但是还是有一些细节问题无法解决。于是去看了官方的文档,才解决了自己的疑惑。

因为我之前一直用的Microsoft Visual Studio开发,所以有现成的编译和调试环境,只需要配置一下就可以了,下面就是我参考的博客

Windows 10下vscode使用visual studio 2017的MSVC配置C/C++编译环境

这篇文章也是写的很不错的,我这里只做一些补充。

(1)vscode装好后要做c++开发,首先就要安装C/C++ extension for VS Code.这个插件的,这个是前提

(2)vscode做c++开发必须指定一个文件夹作为工程目录,然后在这个工程目录下,会有个.vscode的隐藏文件夹,这个文件夹是存放工程配置和vs相关的配置的,最重要的是三个文件c_cpp_properties.json、launch.json和tasks.json

(3)关于这三个文件,做一下说明c_cpp_properties.json主要用于IntelliSense智能感知的,也是是代码输入提示,定义跳转,语法检查这些,tasks.json是用于编译用的,编译命令,参数,编译文件,头文件目录,依赖库目录,编译选项等等,launch.json主要是调试用的,指明调试程序,输入参数等。

(4)关于vscode需要添加自己的头文件目录和依赖库目录的问题

以上的文章中直接通过配置环境变量来实现,这个也可以,但是一般是系统的头文件和依赖库目录,如果自己引入了第三方的库,不可能每次去添加环境变量。我就是在网上查找vscode添加头文件路径问题遇到坑的,很多都说是在c_cpp_properties.json中的includePath添加就可以了,我起初以为,vscode在编译的时候会将c_cpp_properties.json中配置的包含目录添加进去,但是试过之后,虽然在代码编写的时候,提示正常,静态检查正常,但是编译的时候就会提示包含文件找不到。后来仔细阅读了官方的文档,才知道c_cpp_properties.json配置的包含目录和编译时候用到的包含目录没有半毛钱关系,在c_cpp_properties.json文件中添加的包含目录只会用于智能提示,编译的时候一样需要自己在tasks.json文件手动-I或者/I添加包含目录或者依赖库目录。

下面是使用msvc编译时我自己写的配置文件:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "msvc build",
            "type": "shell",
            "command": "cl.exe",
            "args": [
                "/EHsc",
                "/Zi",
                "/I'F:/vs code/project/myinclude'",
                "/Fe:",
                "test.exe",
                "*.cpp",
                "F:/vs code/project/myinclude/*.cpp"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "presentation": {
                "reveal": "always"
            },
            "problemMatcher": "$msCompile"
        }
    ]
}

其中的 "/I'F:/vs code/project/myinclude'"就是我自己加的头文件目录,还要注意这个加的位置,不要让shell解释器认为这个是其他选项的参数。

即完整的加头文件目录是要修改两个配置文件c_cpp_properties.json和tasks.json

(5)如果编译多个cpp文件,并且在cpp文件分布在多个文件夹中只需要在tasks.json的args中,数组末尾添加上多个项,使用通配符*.cpp可以编译完所有的cpp文件,参考以上的task.json的配置

                "*.cpp",
                "F:/vs code/project/myinclude/*.cpp"

这个就是配置了编译当前工作目录和F:/vs code/project/myinclude/目录下的所有cpp文件

(6)windows c++开发必须要配置的INCLUDE目录和lib目录

包含目录1: "C:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/VC/Tools/MSVC/14.16.27023/include"

                      这个是Microsoft Visual Studio集成开发环境的安装目录,看你安装的对应版本的和安装位置,会有不同

包含目录2:"C:/Program Files (x86)/Windows Kits/10/Include/10.0.17763.0/shared",

                    "C:/Program Files (x86)/Windows Kits/10/Include/10.0.17763.0/ucrt",

                    "C:/Program Files (x86)/Windows Kits/10/Include/10.0.17763.0/um",

                    "C:/Program Files (x86)/Windows Kits/10/Include/10.0.17763.0/winrt"

这4个是windows API的包含目录,不同的机器,目录有一些小的差异,但是都是Windows Kits这个文件夹,可以在自己机器上搜索一下

库目录1:C:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/VC/Tools/MSVC/14.16.27023/lib/x64;

                 这个也是Microsoft Visual Studio集成开发环境的安装目录提供的库目录,根据自己的安装位置来填写

库目录2:
               C:/Program Files (x86)/Windows Kits/10/Lib/10.0.17763.0/ucrt/x64;
               C:/Program Files (x86)/Windows Kits/10/Lib/10.0.17763.0/um/x64

               这两个库目录也是windows API需要的库目录

(7)include和lib这个两个环境变量也可以不配置,可以直接把include路径和包含的库路径直接配置到c_cpp_properties.json和tasks.json文件中,下面是使用cl.exe编译器,直接添加所有包含头文件目录和依赖库目录的配置:

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "shell",
			"label": "C/C++: cl.exe 生成活动文件",
			"command": "cl.exe",
			"args": [
				"/Zi",
				"/EHsc",
				"/IC:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include",
				"/IC:/Program Files (x86)/Windows Kits/10/Include/10.0.14393.0/shared",
                "/IC:/Program Files (x86)/Windows Kits/10/Include/10.0.14393.0/ucrt",
                "/IC:/Program Files (x86)/Windows Kits/10/Include/10.0.14393.0/um",
                "/IC:/Program Files (x86)/Windows Kits/10/Include/10.0.14393.0/winrt",
				"/nologo",
				"/Fe:",
				"test.exe",
				"test.cpp",
				"/link",
				"/LIBPATH:C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/lib",
				"/LIBPATH:C:/Program Files (x86)/Windows Kits/10/Lib/10.0.14393.0/ucrt/x86",
				"/LIBPATH:C:/Program Files (x86)/Windows Kits/10/Lib/10.0.14393.0/um/x86"
			],
			"options": {
				"cwd": "${workspaceFolder}"
			},
			"problemMatcher": [
				"$msCompile"
			],
			"group": {
				"kind": "build",
				"isDefault": true
			},
			"detail": "编译器: cl.exe"
		}
	]
}

要注意args各个参数的配置顺序,不能乱配,需要参照cl.exe编译器的使用文档来,其中/link编译选项需要放在最后,添加的依赖库目录需要在/LIBPATH:后面添加,如果还是提示识别不了类似/LIBPATH选项,自己参考cl.exe的官方使用文档去检查。官方的文档如下:

MSVC 编译器 Command-Line 语法 | Microsoft Docs

最后还有一些有用的文章:

msvc编译器cl.exe编译选项的使用:https://www.it610.com/article/4728555.htm

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值