首先声明一点,我这里演示的基础是源文件都位于项目根目录下的,然后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,加个*说明把全部的头文件都加进去了),这里我用相对路径也是为了不想出现中文,当然你想用绝对路径也是可以的。

VScode java war 包反编译 vscode反编译exe_c语言

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

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

VScode java war 包反编译 vscode反编译exe_c++_02

 至此我们的头文件问题就解决了,如果还有问题,肯定是其他地方还没配置好,比如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)

VScode java war 包反编译 vscode反编译exe_ide_03

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

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

VScode java war 包反编译 vscode反编译exe_vscode_04

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

VScode java war 包反编译 vscode反编译exe_ide_05

 为了大家方便,这里也给出了我自己的一个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. 头文件,源文件分离问题

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

VScode java war 包反编译 vscode反编译exe_c++_06

至此,结束~