当前位置:   article > 正文

头文件(include)、源文件(src)、main函数(自定义文件夹)三者在三个不同文件夹的实现,exe独立生成文件夹(bin)_src和include文件夹c++

src和include文件夹c++

最近想要实现头文件、源文件、main函数三者在三个不同文件夹的实现,查找了很多博客,对tasks.json,  launch.json,  c_cpp_properties.json相关配置优良进一步的理解,现总结如下:

实现的内容有:

  • 头文件、源文件、main函数三者在三个不同文件夹(include、src、自定义)的分离包含
  • .exe文件和.cpp文件分开,.exe文件单独在一个文件夹bin

目录

tasks.json, launch.json文件:

tasks.json(原内容):

launch.json(原内容):

tasks.json(修改,直接粘贴即可):

launch.json(修改,直接粘贴即可):

c_cpp_properties.json文件:

c_cpp_properties.json(修改,直接粘贴即可):

工作区settings.json

 工作区settings.json(修改,直接粘贴即可):

用户区settings.json

用户区settings.json(修改,直接粘贴即可):

简要说明:

vscode 当前编辑状态

预定义变量含义


tasks.json, launch.json文件:

简单了解下:tasks用于编译,launch用于执行编译后的文件。

生成方式:桌面新建文件夹用vscode打开后,在工作区新建一个文件夹,名字自定义,写一个hello,world的demo,如图:

然后,启动运行和调试,选择自己的编译器:

这里,我选择第一个:C++(GDB/LLDB) 

 然后选择g++.exe(C语言对应gcc)

然后,.vscode文件夹下会生成tasks.json,  launch.json, 的文件,默认配置内容如下(配置会根据你用户settings.json的内容不同而有所差别)

tasks.json(原内容):

  1. {
  2. "tasks": [
  3. {
  4. "type": "cppbuild",
  5. "label": "C/C++: g++.exe 生成活动文件",
  6. "command": "F:\\mingw\\810\\mingw64\\bin\\g++.exe",
  7. "args": [
  8. "-fdiagnostics-color=always",
  9. "-g",
  10. "${file}",
  11. "-o",
  12. "${fileDirname}\\${fileBasenameNoExtension}.exe"
  13. ],
  14. "options": {
  15. "cwd": "${fileDirname}"
  16. },
  17. "problemMatcher": [
  18. "$gcc"
  19. ],
  20. "group": {
  21. "kind": "build",
  22. "isDefault": true
  23. },
  24. "detail": "调试器生成的任务。"
  25. }
  26. ],
  27. "version": "2.0.0"
  28. }

launch.json(原内容):

  1. {
  2. // 使用 IntelliSense 了解相关属性。
  3. // 悬停以查看现有属性的描述。
  4. // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
  5. "version": "0.2.0",
  6. "configurations": [
  7. {
  8. "name": "g++.exe - 生成和调试活动文件",
  9. "type": "cppdbg",
  10. "request": "launch",
  11. "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
  12. "args": [],
  13. "stopAtEntry": false,
  14. "cwd": "${fileDirname}",
  15. "environment": [],
  16. "externalConsole": false,
  17. "MIMode": "gdb",
  18. "miDebuggerPath": "F:\\mingw\\810\\mingw64\\bin\\gdb.exe",
  19. "setupCommands": [
  20. {
  21. "description": "为 gdb 启用整齐打印",
  22. "text": "-enable-pretty-printing",
  23. "ignoreFailures": true
  24. },
  25. {
  26. "description": "将反汇编风格设置为 Intel",
  27. "text": "-gdb-set disassembly-flavor intel",
  28. "ignoreFailures": true
  29. }
  30. ],
  31. "preLaunchTask": "C/C++: g++.exe 生成活动文件"
  32. }
  33. ]
  34. }

下面针对一些内容进行修改,修改的地方用“//”注释,vscode自动生成的(未修改)的后面为了便于理解,使用“/**/”进行注释

tasks.json(修改,直接粘贴即可):

  1. {
  2. "tasks": [
  3. {
  4. "type": "cppbuild",
  5. "label": "C/C++: g++.exe 生成活动文件", /*任务名称*/
  6. "command": "F:\\mingw\\810\\mingw64\\bin\\g++.exe", /*本地编译器路径*/
  7. "args": [ /*包含传给g++命令的参数,用于实现特定功能*/
  8. "-fdiagnostics-color=always",
  9. "-g", /*生成和调试有关的信息*/
  10. "${file}", /*指定编译文件为当前文件*/
  11. /*******下面这一部分根据自己建立多少源文件就加几个******/
  12. "${workspaceFolder}\\src\\LinkedList.cpp",//加入动态连接的源文件
  13. "-o", /*制定输出文件的路径和名称*/
  14. /*"${fileDirname workspaceFolder}\\${fileBasenameNoExtension}.exe"*/ //删掉默认的这句
  15. "${workspaceFolder}\\bin\\${fileBasenameNoExtension}.exe", //修改.exe文件生成的位置
  16. "-I", //
  17. "${workspaceFolder}\\include", // 头文件所在文件夹
  18. //"${workspaceFolder}\\src",
  19. "-fexec-charset=GBK" //utf-8转GBK格式,解决中文乱码问题
  20. ],
  21. "options": {
  22. //"cwd": "${fileDirname}" //删掉默认的这句
  23. "cwd": "F:\\mingw\\810\\mingw64\\bin" //已执行程序或脚本的当前工作目录。如果省略,则使用代码的当前工作区根。
  24. },
  25. "problemMatcher": [
  26. "$gcc"
  27. ],
  28. "group": { /*包含很多task,归为group*/
  29. "kind": "build", /*表明该组任务类型是构建*/
  30. "isDefault": true /*表明此任务为此组任务中的默认任务*/
  31. },
  32. "presentation": {
  33. "echo": true,
  34. "reveal": "always",
  35. "focus": false,
  36. "panel": "new",
  37. "showReuseMessage": true,
  38. "clear": false
  39. },
  40. "detail": "调试器生成的任务。"
  41. }
  42. ],
  43. "version": "2.0.0"
  44. }

launch.json(修改,直接粘贴即可):

  1. {
  2. // 使用 IntelliSense 了解相关属性。
  3. // 悬停以查看现有属性的描述。
  4. // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
  5. "version": "0.2.0",
  6. "configurations": [
  7. {/*包含Debug配置*/
  8. "name": "g++.exe - 生成和调试活动文件",/* 配置名称,将会在启动配置的下拉菜单中显示*/
  9. "type": "cppdbg",/* 配置类型,这里只能为cppdbg */
  10. "request": "launch", /* 请求配置类型,可以为launch(启动)或attach(附加) */
  11. /*"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",*///删掉默认的这句
  12. "program": "${workspaceFolder}\\bin\\${fileBasenameNoExtension}.exe", // 将要进行调试的程序的本地路径
  13. "args": [], /* 程序调试时传递给程序的命令行参数,一般设为空即可 */
  14. "stopAtEntry": false,/*设为true时程序将暂停在程序入口处,即在main处打上断点,一般设置为false */
  15. "cwd": "${workspaceFolder}",// 调试程序时的工作目录,一般为${workspaceFolder}即代码所在目录
  16. "environment": [],/*环境变量,设置为空值*/
  17. "externalConsole": true,// 调试时是否显示控制台窗口,一般设置为true显示控制台
  18. "MIMode": "gdb",
  19. "miDebuggerPath": "F:\\mingw\\810\\mingw64\\bin\\gdb.exe",//改为自己电脑上MinGW的编译器地址即可
  20. "setupCommands": [
  21. {
  22. "description": "为 gdb 启用整齐打印",
  23. "text": "-enable-pretty-printing",
  24. "ignoreFailures": true
  25. },
  26. {
  27. "description": "将反汇编风格设置为 Intel",
  28. "text": "-gdb-set disassembly-flavor intel",
  29. "ignoreFailures": true
  30. }
  31. ],
  32. "preLaunchTask": "C/C++: g++.exe 生成活动文件"
  33. }
  34. ]
  35. }

c_cpp_properties.json文件:

生成c_cpp_properties.json文件:
扩展程序会根据当前系统环境配置基本信息,因此有可能配置不完整,这时需要通过生成c_cpp_properties.json文件来配置缺少的信息:

ctrl+shift+P打开Command Palette,运行C/Cpp: Edit configurations...生成c_cpp_properties.json

默认如下: 

删除原有内容,粘贴下面代码:

c_cpp_properties.json(修改,直接粘贴即可):

  1. {
  2. "configurations": [
  3. {
  4. "name": "Win32",
  5. "includePath": [
  6. "${default}",
  7. "${workspaceFolder}",
  8. "${workspaceFolder}\\include", //头文件所在文件夹
  9. "${workspaceFolder}\\src" //源文件所在文件夹
  10. ],
  11. "defines": [
  12. "_DEBUG",
  13. "UNICODE",
  14. "_UNICODE"
  15. ],
  16. "windowsSdkVersion": "10.0.19041.0",
  17. "compilerPath": "F:/mingw/810/mingw64/bin/g++.exe"
  18. }
  19. ],
  20. "version": 4
  21. }

工作区settings.json

默认如下:

 工作区settings.json(修改,直接粘贴即可):

  1. {
  2. "C_Cpp.intelliSenseEngineFallback":"Disabled",
  3. "C_Cpp.intelliSenseEngine": "Default",
  4. //"C_Cpp.intelliSenseEngine": "Default",
  5. //Default:默认开启搜索引擎感知上下文
  6. // Disabled:关闭感知上下文搜索
  7. //Tag Parser:用于其他文件搜索感知
  8. "editor.insertSpaces": true,
  9. "files.autoGuessEncoding": true,
  10. "editor.detectIndentation": false,
  11. "commentTranslate.hover.enabled": true,//开启悬停翻译,需要下载commentTranslate插件
  12. "files.associations": {
  13. "vector": "cpp",
  14. "array": "cpp",
  15. "deque": "cpp",
  16. "string": "cpp",
  17. "unordered_map": "cpp",
  18. "string_view": "cpp",
  19. "initializer_list": "cpp",
  20. "iostream": "cpp",
  21. "*.tcc": "cpp"
  22. },
  23. }

用户区settings.json

用户区settings.json(修改,直接粘贴即可):

  1. //用户(全局)设置
  2. {
  3. "editor.fontFamily": "Consolas, 'Courier New', monospace",//字体
  4. //"editor.fontFamily": "Sarasa Nono CL", //另外一种字体
  5. "editor.fontSize": 16,//字号大小
  6. "explorer.confirmDelete": false,//删除文件时是否打开资源管理器询问
  7. "files.encoding": "utf8",
  8. //对Arduino的配置
  9. "arduino.logLevel": "info",
  10. "arduino.path": "F:\\arduino\\Arduino",
  11. //code Runner的一些配置
  12. //"code-runner.runInTerminal": true,
  13. //"code-runner.saveFileBeforeRun": true,
  14. //禁用VScode的更新
  15. "update.enableWindowsBackgroundUpdates": false,
  16. "update.mode": "none",
  17. //对C++配置
  18. //"c_cpp.updateChannel":"Insiders",
  19. //"C_Cpp.defalt.compilerPath":"F:\\mingw\\810\\mingw32\\bin\\gcc.exe",
  20. "C_Cpp.default.compilerPath": "F:\\mingw\\810\\mingw64\\bin\\g++.exe",
  21. "C_Cpp.default.cppStandard": "c++14",
  22. "C_Cpp.default.cStandard": "c11",
  23. "C_Cpp.default.includePath": [
  24. "F:\\mingw\\810\\mingw64\\lib"
  25. ],
  26. "C_Cpp.default.intelliSenseMode": "gcc-x64",
  27. "commentTranslate.targetLanguage": "zh-CN",
  28. "git.autorefresh": false,
  29. "git.autoRepositoryDetection": false,
  30. "explorer.confirmDragAndDrop": false,
  31. }

简要说明:

vscode 当前编辑状态

描述
当前打开工作区的路径 (.vscode文件夹所在路径)C:\Users\lumen\Desktop\project
当前编辑器打开的文件路径 (正在编辑的文件)C:\Users\lumen\Desktop\project\source\main.cpp

预定义变量含义

变量含义
${workspaceFolder}工作区文件夹C:\Users\lumen\Desktop\project
${workspaceFolderBasename}工作区文件夹基本名称project
${file}文件C:\Users\lumen\Desktop\project\source\main.cpp
${fileDirname}文件目录名C:\Users\lumen\Desktop\project\source
${fileBasename}文件基本名称main.cpp
{fileBasenameNoExtension}文件基本名称(无扩展名)main
${fileExtname}文件扩展名.cpp
${relativeFile}相对文件source\main.cpp
${relativeFileDirname}相对文件目录名source
${lineNumber}行数光标的行号
${selectedText}被选择的文本在代码编辑器中选择的文本
${execPath}执行文件的路径a.exe 的位置
${defaultBuildTask}默认构建任务的名称
${cwd}启动时任务运行器的当前工作目录

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/292907
推荐阅读
相关标签
  

闽ICP备14008679号