首先声明一点,我这里演示的基础是源文件都位于项目根目录下的,然后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),其次注意路径前后的\"。
至此我们的头文件问题就解决了,如果还有问题,肯定是其他地方还没配置好,比如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. 头文件,源文件分离问题
最后给大家看一下我的项目文件目录
至此,结束~