c++雪花屏(vsCode+cmake+mingw+ninja)

一. 内容简介

c++雪花屏(vsCode+cmake+mingw+ninja),代码来自于赵老师,我改了一下编译环境

【B站最好的OpenGL图形学-全家桶(四门课程)系统介绍】 https://www.bilibili.com/video/BV1AE421P7kK/?share_source=copy_web\&vd_source=7b377d4a833a67013df5f95f32b390f8

代码以及安装包链接:

通过网盘分享的文件:c++雪花屏(vsCode+cmake+mingw+ninja)

链接: https://pan.baidu.com/s/1R2B6PTHQmqH9MFkNRLEODA?pwd=8888 提取码: 8888

--来自百度网盘超级会员v8的分享

二. 软件环境

2.1 vsCode

2.2 cmake

2.3 mingw

2.4 ninja

三.主要流程

3.1 软件安装

3.2 软件介绍

3.3 软件运行

3.4 问题处理

四.具体步骤

4.1 软件安装

CMake

就随便下载安装就可以了(网盘里面也有),插件如下(日积月累装的,具体都是什么作用不清楚):

json 复制代码
Code Runner
Better C++ Syntax
C/C++
C/C++ Extension Pack
C/C++ Themes
Makefile Tools

cmake

用的是cmake-4.1.1-windows-x86_64.msi,直接安装网盘的安装包,

mingw,ninja,qt6

都是用qt安装的,qt安装的6.8,ninja只有一个,mingw和qt6.8匹配就行,直接安装网盘的安装包,

json 复制代码
// cmd(管理员运行),进入到对应的文件的,执行下面的,安装就行
qt-online-installer-windows-x64-online --mirror https://mirrors.ustc.edu.cn/qtproject
// 这个用于后面增加或者去掉组件
MaintenanceTool.exe --mirror https://mirror.nju.edu.cn/qt

4.2 软件介绍

先讲一下改的地方,然后介绍一下软件的实现思路,

c++ 复制代码
// 这个代码其实只在msvc有效,就相当于在编译命令后面添加了这些命令,mingw没办法用
#pragma comment(linker, "/subsystem:console /entry:wWinMainCRTStartup" )

// mingw在cmakelist中添加这个就好了
target_link_options(softRenderer PRIVATE -municode)

软件思路

c++ 复制代码
// 创建窗体,
// mhDC为显示的dc,mCanvasDC为空的dc,mhBmp和mCanvasDC绑定,作为画板,mCanvasBuffer是指向画板的指针
app->initApplication(hInstance,800, 600)
// mFrameBuffer就是和mCanvasBuffer绑定了
// 然后使用通过mFrameBuffer去修改mhBmp里面的颜色,可以完成整个画板颜色的替换
uint32_t pixelPos = y * mFrameBuffer->mWidth + x; // �����һ�м���x��ƫ����
mFrameBuffer->mColorBuffer[pixelPos] = color;
// 然后把mCanvasDC的的数据拷贝mhDC,就完成了页面的刷新
BitBlt(mhDC, 0, 0, mWidth, mHeight, mCanvasDC, 0, 0, SRCCOPY);

4.3 软件运行

下载代码,使用vscode打开,里面的CMakePresets.json,tasks.json,launch.json,c_cpp_properties.json都是配置好的,需要按自己的的配置改一下。

CMakePresets.json

json 复制代码
// CMakePresets.json
// 按着自己的位置给,CMAKE_C_COMPILER,CMAKE_CXX_COMPILER,CMAKE_MAKE_PROGRAM,Qt6_DIR位置都替换一下
{
  "version": 3,
  "configurePresets": [
    {
      "name": "debug_Ninja",
      "displayName": "Debug Build",
      "generator": "Ninja",
      "binaryDir": "${sourceDir}/build/debug",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug",
        "CMAKE_C_COMPILER": "D:/Qt/Tools/mingw1310_64/bin/gcc.exe",
        "CMAKE_CXX_COMPILER": "D:/Qt/Tools/mingw1310_64/bin/g++.exe",
        "CMAKE_MAKE_PROGRAM": "D:/Qt/Tools/Ninja/ninja.exe",
        "SHOW_CONSOLE":true,
        "Qt6_DIR": "D:/Qt/6.8.3/mingw_64/lib/cmake/Qt6"
      }
    },
    {
      "name": "release_Ninja",
      "displayName": "Release Build",
      "generator": "Ninja",
      "binaryDir": "${sourceDir}/build/release",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Release",
        "CMAKE_C_COMPILER": "D:/Qt/Tools/mingw1310_64/bin/gcc.exe",
        "CMAKE_CXX_COMPILER": "D:/Qt/Tools/mingw1310_64/bin/g++.exe",
        "CMAKE_MAKE_PROGRAM": "D:/Qt/Tools/Ninja/ninja.exe",
        "SHOW_CONSOLE":false,
        "Qt6_DIR": "D:/Qt/6.8.3/mingw_64/lib/cmake/Qt6"
      }
    }
  ]
}

对应的文件调整完了以后,

先构建,构建进去CMakeLists.txt以后,ctrl+s,会自动构建,如果提示不知道怎么构建,ctrl+shift+p,选一下构建配置即可,然后ctrl+shift+b运行就行,调试的话可以参考我之前的博客

vsCode+cmake+mingw+ninja+qt6环境搭建(包含例子代码)及问题处理

https://blog.csdn.net/qq_45179361/article/details/155495028


相关推荐
小年糕是糕手2 小时前
【C++】内存管理(下)
java·c语言·开发语言·数据结构·c++·算法
一叶之秋14122 小时前
深入剖析vector的底层实现原理
c++
缺点内向2 小时前
如何使用C#将Excel工作表拆分为独立文件
开发语言·c#·.net·excel
艾莉丝努力练剑2 小时前
【Linux基础开发工具 (六)】Linux中的第一个系统程序——进度条Linux:详解回车、换行与缓冲区
java·linux·运维·服务器·c++·centos
ZouZou老师2 小时前
C++设计模式之单例模式:以小区快递柜为例
c++·单例模式·设计模式
csbysj20202 小时前
jEasyUI 自定义排序
开发语言
蜗牛love天空2 小时前
qt窗口机制和mfc窗口机制
c++
编织幻境的妖2 小时前
Python对象序列化和反序列化方法总结
开发语言·python
BUG创建者2 小时前
thee.js完成线上展厅demo
开发语言·前端·javascript·css·html·css3·three.js