vscode 配置opengl (glut), lib链接可参考

2024-03-08 19:44

本文主要是介绍vscode 配置opengl (glut), lib链接可参考,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这里假定你已经配置好基础的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就是各个编译参数:

-I<Include_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-color=always","-g3","-c","${file}","-o","${fileDirname}\\${fileBasenameNoExtension}.o","--std","c++17",],"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目录,指令:-L<lib_path>, 同时要引入库, 指令: -l<lib_name>, 这里lib_name注意不要前面的lib
  • 同时这里本人踩了大坑,g++编译时, -l<lib_name> 必须要放在源文件后面,推荐直接放最后面,不然它还是链接不上
  • 同时你链接需要.o,所以该task, “dependsOn”: [“glut compile”] (上一节的名字)
  • 可参考代码如下:
{"type": "process","label": "glut link","command": "E:/MinGW/bin/g++.exe","args": ["-fdiagnostics-color=always","-g3","${fileDirname}\\${fileBasenameNoExtension}.o","-o","${fileDirname}\\${fileBasenameNoExtension}.exe","--std","c++17","-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()

这篇关于vscode 配置opengl (glut), lib链接可参考的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/788189

相关文章

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题

《解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题》:本文主要介绍解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4... 目录未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘打开pom.XM

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

Nginx 重写与重定向配置方法

《Nginx重写与重定向配置方法》Nginx重写与重定向区别:重写修改路径(客户端无感知),重定向跳转新URL(客户端感知),try_files检查文件/目录存在性,return301直接返回永久重... 目录一.try_files指令二.return指令三.rewrite指令区分重写与重定向重写: 请求

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关