首先声明一点,我这里演示的基础是源文件都位于项目根目录下的,然后exe文件和头文件可以放在项目的其他任何文件夹中的。

 

目录

1. vscode自定义头文件包含问题

1.1 首先是我们的c_cpp_peoperties.json文件

 1.2 接下来是我们的settings.json文件

2.改变exe生成路径问题

2.1 首先是我们的tasks.json文件

 2.2 其次是我们的settings.json文件

3. 头文件,源文件分离问题

 

1. vscode自定义头文件包含问题

vscode如何包含自己写的头文件呢,这里我们主要修改两个json文件

1.1 首先是我们的c_cpp_peoperties.json文件

为了方便,我创建了一个文件夹include,专门用于存放我的项目头文件,这个完全看你喜好了,你想放哪都行。我们找到这个json文件中的includePath数组,把你的头文件路径添加进去就行了。(补充一下.\\是当前项目的路径,也就是.vscode文件夹的上一级c_files,加个*说明把全部的头文件都加进去了),这里我用相对路径也是为了不想出现中文,当然你想用绝对路径也是可以的。

 1.2 接下来是我们的settings.json文件

 打开文件在这个code-runner.executorMap下面进行修改,以c语言为例,在这个gcc的后面加上你的头文件路径,注意路径前面要加-I(大写的i),其次注意路径前后的\"。(不知道这个JSON文件哪来的,可以参考这个https://blog.csdn.net/weixin_63676550/article/details/128194156 的第三个问题 )

 至此我们的头文件问题就解决了,如果还有问题,肯定是其他地方还没配置好,比如exe路径之类的。下面也会介绍这些json文件是怎么生成exe文件路径的。

2.改变exe生成路径问题

对于exe文件的生成,我们知道无论是c还是c++,编译链接完之后都会生成一个exe文件,如果不改路径的话,它就默认跟我们的源程序cpp文件放到一个目录下了,如果你有强迫症,那么下面我们就来改变一下这个exe文件的生成路径,这里也是只需要改变两个json文件即可。

2.1 首先是我们的tasks.json文件

可以看到,我这里是创建了一个exe文件夹,然后打开tasks.json文件,找到args数组,把里面那个-o后面的路径(你应该能认出来吧(●'◡'●))也是改成你自己想要的exe文件夹路径。(这里补充一下,${fileDirname}就是我们的项目文件夹路径,${fileBasenameNoExtension}就是我们的执行文件,但它不带文件扩展名,所以要手动加一个exe)

 2.2 其次是我们的settings.json文件

依然是在code-runner.executorMap下面进行修改,在这个c这修改,当然如果你是c++那你就选cpp那行。

 在我们刚刚包含头文件路径的后面的这个-o后面加上我们的exe文件路径,路径跟刚刚tasks.json文件中的是一样的(一点小区别了,我这里最后用的是fileNameWithoutExt,刚刚tasks.json文件中用的是fileBasenameNoextension),注意&&前后两段是一样的路径。json文件不是最后一行,最后要记得加逗号。

 为了大家方便,这里也给出了我自己的一个settings.json文件(C语言的)。其实这方面设置,c语言和c++的区别就在于后缀名和gcc、g++了,比着画就行了。

{

"workbench.colorTheme": "Visual Studio Dark",//设置背景皮肤的

"terminal.integrated.defaultProfile.windows": "Command Prompt",

"code-runner.runInTerminal": true,

"files.encoding": "gbk",

"grunt.autoDetect": "on",

"code-runner.preserveFocus": true,//设置让光标在代码运行后集中到终端的

"settingsSync.ignoredExtensions": [

],

"code-runner.executorMap": {

"c": "cd $dir && gcc -I \"D:\\IDE_code_practice\\vs_code\\C_files\\include\" $fileName -o .\\exe\\$fileNameWithoutExt.exe && .\\exe\\$fileNameWithoutExt.exe",

"code-runner.clearPreviousOutput": true,

"files.autoSave": "afterDelay", //设置自动保存代码的

"code-runner.executorMapByFileExtension": {

".vb": "cd $dir && vbc /nologo $fileName && $dir$fileNameWithoutExt",

".vbs": "cscript //Nologo",

".scala": "scala",

".jl": "julia",

".cr": "crystal",

".ml": "ocaml",

".exs": "elixir",

".hx": "haxe --cwd $dirWithoutTrailingSlash --run $fileNameWithoutExt",

".rkt": "racket",

".scm": "csi -script",

".ahk": "autohotkey",

".au3": "autoit3",

".kt": "cd $dir && kotlinc $fileName -include-runtime -d $fileNameWithoutExt.jar && java -jar $fileNameWithoutExt.jar",

".kts": "kotlinc -script",

".dart": "dart",

".pas": "cd $dir && fpc $fileName && $dir$fileNameWithoutExt",

".pp": "cd $dir && fpc $fileName && $dir$fileNameWithoutExt",

".d": "cd $dir && dmd $fileName && $dir$fileNameWithoutExt",

".hs": "runhaskell",

".nim": "nim compile --verbosity:0 --hints:off --run",

".csproj": "dotnet run --project",

".fsproj": "dotnet run --project",

".lisp": "sbcl --script",

".kit": "kitc --run",

".v": "v run",

".vsh": "v run",

".sass": "sass --style expanded",

".cu": "cd $dir && nvcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",

".ring": "ring",

".sml": "cd $dir && sml $fileName"

},

"C_Cpp.default.cppStandard": "c++11",

"C_Cpp.default.cStandard": "c11",

"code-runner.ignoreSelection": true

}

}

3. 头文件,源文件分离问题

最后给大家看一下我的项目文件目录

至此,结束~ 

 

 

 

 

相关链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: