南京玄武区建设局网站,wordpress数据库结构,网站宣传怎样做不违法,利用图床做网站这里假定你已经配置好基础的vscode c环境
json介绍
这里其实主要配置的3种json, vscode其实就是通过launch.json和tasks.json来自动生成指令的
launch.json 这个用于启动程序用的#xff0c;但是由于其可以指定preLaunchTask-即在启动之前需要做什么事情#xff0c;所以这…这里假定你已经配置好基础的vscode c环境
json介绍
这里其实主要配置的3种json, vscode其实就是通过launch.json和tasks.json来自动生成指令的
launch.json 这个用于启动程序用的但是由于其可以指定preLaunchTask-即在启动之前需要做什么事情所以这里用来启动编译-链接到最后启动程序等一系列过程 我们可以看到图中左上角每一个启动方式(c/c Runner:Debug Session和c/c glut)其实都对应configurations数组中的一个json的name属性 而在这里我们启动了cmd(program)让cmd去调用我们生成好的程序(args)并且调用完成后再调用pause指令我们通过preLaunchTask所指向的task完成程序的编译等操作 tasks.json 本json中就存放了各种task每个task都对应一个json而preLaunchTask就是通过这里每个json的label属性来找是哪个task这里我们就让task去做3件事情1.编译2.链接3.复制dll c_cpp_properties.json 这个json和程序生成与运行无关他是用来配置intellisense这个配置错了你写代码会有报错但是编译和生成这些还是正常的一般就需要注意一下standard和includePath就行 配置freeglut 下载地址https://www.transmissionzero.co.uk/software/freeglut-devel/ 注意选择mingw 下载完毕选择一个地方安装解压即可 其中 bin中的dll是运行时需要的 include是编译时需要的包含目录 lib是连接是需要的库目录 修改task.json
这里主要通过command后面的指令args中的参数组成一整个命令行语句然后调用此外通过dependsOn 来构成task之间的依赖
创建编译任务 compile
这里command为你的g.exe的路径若你将g的目录添加到了环境变量中则可以直接使用g而args就是各个编译参数 -IInclude_path引入包含文件夹用于编译 -c 指定编译源文件-o 指定输出的文件这里生成中间文件.o 可参考代码如下 {type: cppbuild,label: glut compile,command: E:/MinGW/bin/g.exe,args: [-IE:\\CPP\\OpenGL\\freeglut-MinGW-3.0.0-1.mp\\freeglut\\include,-fdiagnostics-coloralways,-g3,-c,${file},-o,${fileDirname}\\${fileBasenameNoExtension}.o,--std,c17,],options: {cwd: E:/MinGW/bin},problemMatcher: [$gcc],group: {kind: build,isDefault: true},detail: 调试器生成的任务。},创建连接任务 link
类似编译,这里同样command为g只是args变成链接的参数了具体为g x.o -o y.exe,将x.o链接生成y.exe那这里既然要链接就要引入库目录对应lib目录指令-Llib_path, 同时要引入库, 指令 -llib_name, 这里lib_name注意不要前面的lib 同时这里本人踩了大坑g编译时 -llib_name 必须要放在源文件后面推荐直接放最后面不然它还是链接不上 同时你链接需要.o,所以该task, “dependsOn”: [“glut compile”] (上一节的名字)可参考代码如下
{type: process,label: glut link,command: E:/MinGW/bin/g.exe,args: [-fdiagnostics-coloralways,-g3,${fileDirname}\\${fileBasenameNoExtension}.o,-o,${fileDirname}\\${fileBasenameNoExtension}.exe,--std,c17,-LE:\\CPP\\OpenGL\\freeglut-MinGW-3.0.0-1.mp\\freeglut\\lib\\,-lopengl32, -lglu32, -lfreeglut,],options: {cwd: E:/MinGW/bin},problemMatcher: [$gcc],group: {kind: build,isDefault: true},detail: 调试器生成的任务。,dependsOn: [glut compile]},创建移动lib任务 setup
最后要将dll移动到你生成exe的目录下这里我们使用xcopy指令注意command同时dependsOn: [“glut link”]参考代码如下
{type: process,label: glut setup,command: xcopy,args: [/y,/d,E:\\CPP\\OpenGL\\freeglut-MinGW-3.0.0-1.mp\\freeglut\\bin\\freeglut.dll,${fileDirname}\\],options: {cwd: E:/MinGW/bin},problemMatcher: [$gcc],group: {kind: build,isDefault: true},detail: 调试器生成的任务。,dependsOn: [glut link]},修改launch.json
最后在launch.json 添加我们的启动json即可启动的程序为cmd.exe然后args, 通过cmd调用我们生成的exe并最后pause通过 “preLaunchTask”: “glut setup” 来调用我们的task链条参考代码 {name: C/C glut,type: cppdbg,request: launch,stopAtEntry: false,externalConsole: true,cwd: e:/CPP/testVsCode,program: C:\\Windows\\System32\\cmd.exe,args:[/C, ${fileDirname}\\${fileBasenameNoExtension}.exe, ,pause],MIMode: gdb,miDebuggerPath: gdb,setupCommands: [{description: Enable pretty-printing for gdb,text: -enable-pretty-printing,ignoreFailures: true}],preLaunchTask: glut setup}最后找到对应位置即可编译生成啦
补充
vscode运行c时若想运行在独立控制窗口那么为了避免窗口瞬间关闭看不到输出可以使用cmd来调用程序但是这样会命中不了断点。若想命中断点且能看到输出要不用内置控制台要不在代码末尾补个getchar()