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


相关推荐
挖矿大亨几秒前
C++中的赋值运算符重载
开发语言·c++·算法
superman超哥3 分钟前
Rust 基本数据类型:类型安全的底层探索
开发语言·rust·rust基本数据类型·rust底层探索·类型安全
Liu-Eleven3 分钟前
Qt/C++开发嵌入式项目日志库选型
开发语言·c++·qt
A242073493010 分钟前
深入浅出JS事件:从基础原理到实战进阶全解析
开发语言·前端·javascript
qq_4335545414 分钟前
C++区间DP
c++·算法·动态规划
烧冻鸡翅QAQ18 分钟前
从0开始的游戏编程——开发前的编程语言准备(JAVAScript)
开发语言·javascript·游戏
saber_andlibert22 分钟前
【C++转GO】文件操作+协程和管道
开发语言·c++·golang
Halo_tjn35 分钟前
Java IO流实现文件操作知识点
java·开发语言·windows·算法
历程里程碑39 分钟前
滑动窗口解法:无重复字符最长子串
数据结构·c++·算法·leetcode·职场和发展·eclipse·哈希算法
FL162386312941 分钟前
VTK源码编译时候选qt5路径
开发语言·qt