从零开始配置Qt+VsCode环境

news2024/11/28 5:44:56

从零开始配置Qt+VsCode环境

文章目录

  • 从零开始配置Qt+VsCode环境
    • 写在前面
    • 扩展安装及配置
      • Qt Configure配置
    • VsCode创建Qt工程
    • VsCode+QMake+MinGw
    • VsCode+QMake+Msvc
    • VsCode+CMake+MinGw
    • VsCode+CMake+Msvc
    • QtCreator+QMake+MinGw->VsCode
    • QtCreator+QMake+Msvc->VsCode
    • QtCreator+CMake+MinGw->VsCode
    • QtCreator+CMake+Msvc->VsCode
    • 脚本和配置的通用化
      • VsCode+QMake

写在前面

  • 测试环境(20241120):Win11 + VsCode1.93.0 + Qt5.15.2 + CMake3.28.0-rc3
  • 本文章适用于有一定Qt使用基础,并且想转到VsCode的同学。

扩展安装及配置

  • Qt Configure(@vector-wlc) 必须

    在这里插入图片描述

  • Qt Extension Pack(@Qt Group),不是必要但可提升使用体验,Qt UI具有点击.ui文件启动Qt Widgets Designer
    在这里插入图片描述

  • Qt C++ Extension Pack(@Qt Group),该扩展包包含了Qt Extension Pack(@Qt Group),同时增加了C/C++(@Microsoft),CMake(@twxs),CMake Tools(@Microsoft),对于不想手动一个一个安装的可以推荐。若想使用CMake这个三个都是必须的。

    在这里插入图片描述

  • 对于C/C++推荐装一个C/C++ Extension Pack(@Microsoft)

    在这里插入图片描述

Qt Configure配置

  • Qt Configure: Mingw Path,请设置MinGwbin之前那个路径,请根据自身环境实际情况进行配置

    D:\Programs\Qt\5.15.2\mingw81_64
    
  • Qt Configure: Qt Dir,请根据自身环境实际情况设置Qt的安装路径

    D:\Programs\Qt
    
  • Qt Configure: Vcvarsall Path,设置VS环境变量脚本路径,在使用Msvc编译器时会用到,同样请根据自身环境实际情况进行配置

    D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat
    

在这里插入图片描述

  • 这里主要了就是配置Qt Configure扩展其它扩展记不太清楚了,若有不懂的可评论或者私信沟通。
  • 还有就是我的CMake是设置了系统环境变量的,有可能会对项目操作有一些影响。

VsCode创建Qt工程

  • Ctrl + Shift + P 通过QtConfigure插件新建工程

    在这里插入图片描述

  • 输入项目名称并确认
    在这里插入图片描述

  • 选择Qt的构建套件,这些都是Qt的构建套件包含MinGw和Msvc,不同的Qt版本略有不同,请结合自身实际情况进行选择
    在这里插入图片描述

  • 选择构建工具

    在这里插入图片描述

  • 选择是否带UI文件

    在这里插入图片描述

  • 选择完成过后将自动创建项目工程

    • 自动创建的工程如下,
    • 其中.pro文件是Qt的项目文件,
    • src是自动生成的源文件
    • .vscode中是VsCode工程工作时必要的配置信息,
    • scripts中是项目构建生成时的脚本,
    • 其实VsCode编译器工程本质上是通过命令行执行这些脚本调用qmake进行工程编译和生成的。
      在这里插入图片描述
  • 若想要编译运行

    • 第一种可通过先单击一个.cpp文件,后会在右上角出现运行符号,可直接点击也可下拉选择

    在这里插入图片描述
    在这里插入图片描述

    • 第二种 Ctrl + Shift + P 输入run,选择运行生成任务

      在这里插入图片描述

      • 选择 debug或者release
        在这里插入图片描述

VsCode+QMake+MinGw

  • 若是创建工程时选择MinGw作为构建套件,QMake作为构建工具则需要做一些修改

  • 修改构建脚本 ./scripts/build_debug.bat

    • 在创建脚本的时候自动生成的mingw32-make的路径是在D:\Programs\Qt\5.15.2\mingw81_64 下面,这可能是由于我这里是Qt5.15.2,它不在这个路径下而是D:\Programs\Qt\Tools\mingw810_64,读者请根据自身实际情况进行修改。
    @echo off
    title qmake and nmake build prompt
    @REM 修改mingw32-make的路径
    @REM set MINGW_PATH=D:\Programs\Qt\5.15.2\mingw81_64 
    set MINGW_PATH=D:\Programs\Qt\Tools\mingw810_64
    set QT_DIR=D:\Programs\Qt\5.15.2\mingw81_64
    set BUILD_DIR=%cd%\build
    set PRO_DIR=%cd%
    set PATH=%MINGW_PATH%\bin;%QT_DIR%\bin;%PATH%
    
    
    if not exist %BUILD_DIR% (
        md %BUILD_DIR%
    )
    
    cd build
    qmake.exe %PRO_DIR%\VsCodeQMakeMinGw.pro -spec win32-g++ "CONFIG+=debug" "CONFIG+=console"
    if exist %BUILD_DIR%\debug\VsCodeQMakeMinGw.exe del %BUILD_DIR%\debug\VsCodeQMakeMinGw.exe
    @REM D:\Programs\Qt\Tools\QtCreator\bin\jom.exe -j4
    %MINGW_PATH%\bin\mingw32-make -f Makefile.Debug
    cd debug
    if not exist %BUILD_DIR%\debug\Qt5Core.dll (
        windeployqt VsCodeQMakeMinGw.exe
    )
    
  • 修改运行配置文件./.vscode/launch.json

    • 同样因为Qt不同版本的gbd.exe的调试器路径可能不同这样也需要做出一定修改否则会报错

      在这里插入图片描述

    • 修改gdb.exe路径即miDebuggerPath参数

    {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "debug",
                "type": "cppdbg",
                "request": "launch",
                "program": "${workspaceRoot}/build/debug/VsCodeQMakeMinGw.exe",
                "args": [],
                "stopAtEntry": false,
                "cwd": "${workspaceRoot}",
                "environment": [],
                "externalConsole": false,
                "MIMode": "gdb",
                // 修改gdb路径
                // "miDebuggerPath": "D:/Programs/Qt/5.15.2/mingw81_64/bin/gdb.exe",
                "miDebuggerPath": "D:/Programs/Qt/Tools/mingw810_64/bin/gdb.exe",
                "setupCommands": [
                    {
                        "description": "Enable pretty-printing for gdb",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
                    }
                ],
                "preLaunchTask": "debug"
            }
        ]
    }
    
  • 这时候编译运行应该能直接弹出Qt窗口了

    在这里插入图片描述

VsCode+QMake+Msvc

  • VsCode1.93.0 + Qt5.15.2 + Msvc2015

  • 创建工程时选择Msvc作为构建套件,QMake作为构建工具时唯一需要注意的就是设置好 Qt Configure: Vcvarsall Path路径,在扩展配置中有说明。

  • 若是配置没有问题直接编译运行应该就能看到弹出的Qt窗口了。

    在这里插入图片描述

VsCode+CMake+MinGw

  • VsCode1.93.0 + Qt5.15.2 + CMake3.28.0-rc3 + mingw81_64

  • 在创建工程时选择MinGw作为构建套件,选择CMake作为构建工具。

  • 构建生成运行

    在这里插入图片描述

    • 第一次运行时需要选择构建器

    • 这里请选择QtBuild

    在这里插入图片描述

  • 同时需要修改 ./.vscode/launch.json文件,这样也是修改dgb的路径,请读者根据自身情况就行修改。

    {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "QtBuild",
                "type": "cppdbg",
                "request": "launch",
                "program": "${command:cmake.launchTargetPath}",
                "args": [],
                "stopAtEntry": false,
                "cwd": "${workspaceRoot}",
                "environment": [
                    {
                        "name": "PATH",
                        "value": "D:/Programs/Qt/5.15.2/mingw81_64/bin"
                    }
                ],
                "externalConsole": false,
                // "miDebuggerPath": "D:/Programs/Qt/5.15.2/mingw81_64/bin/gdb.exe"
                "miDebuggerPath": "D:/Programs/Qt/Tools/mingw810_64/bin/gdb.exe"
            }
        ]
    }
    
  • 对于CMake工程这里还有一种构建运行方式,且好像不用修改 launch.json文件。

    在这里插入图片描述

  • 项目运行效果
    在这里插入图片描述

VsCode+CMake+Msvc

  • VsCode1.93.0 + Qt5.15.2 + CMake3.28.0-rc3 + Msvc2015

  • 在创建工程时选择Msvc作为构建套件,选择CMake作为构建工具。

  • 只有第一次运行时需要选择对应的编译构建器,其它都与VsCode+CMake+MinGw一样。

  • 构建生成运行

    在这里插入图片描述

    • 第一次运行时需要选择构建器

    • 这里请选择QtBuild
      在这里插入图片描述

  • 运行效果如下

    在这里插入图片描述

QtCreator+QMake+MinGw->VsCode

  • Qt5.15.2 + QtCreator12.0.1 + VsCode1.93.0 + mingw81_64

  • 特别说明:QtCreator和VsCode扩展(Qt Configure)自动创建的工程有些不同,但是都会依赖于pro文件,QMake是基于进行编译生成的

  • 使用QtCreator创建一个以MinGw为构建套件,QMake为构建工具的工程,并将其转换为VsCode工程,并在VsCode中进行编辑编译并运行。(这里不再赘述QtCreator工程的创建)

  • 这里进行说明一下,Qt工程文件是.pro文件,但VsCode并没有明确的工程文件只有工程的配置文件,通过我们前面的VsCode+QMake+MinGw 可以知道其实VsCode只是将工程编译整合到脚本命令中了,编译时依然会使用.pro工程。

  • 所以我们直接将VsCode+QMake+MinGw 创建的.vscodescripts 文件夹拷贝到QtCreator创建的工程,并用VsCode打开。

    在这里插入图片描述

  • 先修改./scripts/build_debug.bat脚本

    • 这里是VsCode+QMake+MinGw 工程创建的脚本进行修改的,可以对比着看。
    • 最好不要使用中文,bat脚本有时候会因为编码问题导致运行不正常,可将其转换为ASCII编码,VsCode默认保存为UTF-8
    @echo off
    title qmake and nmake build prompt
    @REM set MINGW_PATH=D:\Programs\Qt\5.15.2\mingw81_64
    set MINGW_PATH=D:\Programs\Qt\Tools\mingw810_64
    set QT_DIR=D:\Programs\Qt\5.15.2\mingw81_64
    @REM set BUILD_DIR=%cd%\build
    set BUILD_DIR=%cd%\..\build-QtCreatorQMakeMinGw-Desktop_Qt_5_15_2_MinGW_64_bit
    set PRO_DIR=%cd%
    set PATH=%MINGW_PATH%\bin;%QT_DIR%\bin;%PATH%
    
    if not exist %BUILD_DIR% (
        md %BUILD_DIR%
    )
    
    cd %BUILD_DIR%
    qmake.exe %PRO_DIR%\QtCreatorQMakeMinGw.pro -spec win32-g++ "CONFIG+=debug" "CONFIG+=console"
    if exist %BUILD_DIR%\debug\QtCreatorQMakeMinGw.exe del %BUILD_DIR%\debug\QtCreatorQMakeMinGw.exe
    @REM D:\Programs\Qt\Tools\QtCreator\bin\jom.exe -j4
    %MINGW_PATH%\bin\mingw32-make -f Makefile.Debug
    cd debug
    if not exist %BUILD_DIR%\debug\Qt5Core.dll (
        windeployqt %BUILD_DIR%\debug\QtCreatorQMakeMinGw.exe
    )
    
  • 再修改 ./.vscode/launch.json文件,设置运行文件路径

    {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "debug",
                "type": "cppdbg",
                "request": "launch",
                // "program": "${workspaceRoot}/build/debug/VsCodeQMakeMinGw.exe",
                "program": "${workspaceRoot}/../build-QtCreatorQMakeMinGw-Desktop_Qt_5_15_2_MinGW_64_bit/debug/QtCreatorQMakeMinGw.exe",
                "args": [],
                "stopAtEntry": false,
                "cwd": "${workspaceRoot}",
                "environment": [],
                "externalConsole": false,
                "MIMode": "gdb",
                // 修改gdb路径
                // "miDebuggerPath": "D:/Programs/Qt/5.15.2/mingw81_64/bin/gdb.exe",
                "miDebuggerPath": "D:/Programs/Qt/Tools/mingw810_64/bin/gdb.exe",
                "setupCommands": [
                    {
                        "description": "Enable pretty-printing for gdb",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
                    }
                ],
                "preLaunchTask": "debug"
            }
        ]
    }
    
  • 特别说明:Qt.pro工程使用的是影子构建,所以这里是build-QtCreatorQMakeMinGw-Desktop_Qt_5_15_2_MinGW_64_bit,若是自定义构建输出路径,以及中间生成参数请,根据实际路径做修改。

  • 项目构建编译运行参考,运行效果如下

    在这里插入图片描述

QtCreator+QMake+Msvc->VsCode

  • Qt5.15.2 + QtCreator12.0.1 + VsCode1.93.0 + msvc2015

  • 使用QtCreator创建一个以Msvc为构建套件,QMake为构建工具的工程,并将其转换为VsCode工程,并在VsCode中进行编辑编译并运行。(这里不再赘述QtCreator工程的创建)

  • 在QtCreator+QMake+MinGw->VsCode我们已经说明QtCreatorVsCode操作的基本原理,就不在进行说明了。

  • 同样我们拷贝VsCode+QMake+Msvc工程创建的.vscodescripts文件夹到QtCreator项目中。

  • 修改./scripts/build_debug.bat脚本

    • 这里是VsCode+QMake+Msvc工程创建的脚本进行修改的,可以对比着看。
    @echo off
    
    set QT_DIR=D:\Programs\Qt\5.15.2\msvc2015_64
    set SRC_DIR=%cd%
    @REM set BUILD_DIR=%cd%\build
    set BUILD_DIR=%cd%\..\build-QtCreatorQMakeMsvc-Desktop_Qt_5_15_2_MSVC2015_64bit
    
    if not exist %QT_DIR% exit
    if not exist %SRC_DIR% exit
    if not exist %BUILD_DIR% md %BUILD_DIR%
    
    cd %BUILD_DIR%
    
    call "D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64
    
    %QT_DIR%\bin\qmake.exe %SRC_DIR%\QtCreatorQMakeMsvc.pro -spec win32-msvc  "CONFIG+=debug" "CONFIG+=console"
    if exist %BUILD_DIR%\debug\QtCreatorQMakeMsvc.exe del %BUILD_DIR%\debug\QtCreatorQMakeMsvc.exe
    nmake Debug
    if not exist %BUILD_DIR%\debug\Qt5Cored.dll (
      %QT_DIR%\bin\windeployqt.exe %BUILD_DIR%\debug\QtCreatorQMakeMsvc.exe
    )
    
  • 修改 ./.vscode/launch.json文件,设置运行文件路径

    {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "Launch",
                "type": "cppvsdbg",
                "request": "launch",
                // "program": "${workspaceRoot}/build/debug/VsCodeQMakeMsvc.exe",
                "program": "${workspaceRoot}/../build-QtCreatorQMakeMsvc-Desktop_Qt_5_15_2_MSVC2015_64bit/debug/QtCreatorQMakeMsvc.exe",
                "args": [],
                "stopAtEntry": false,
                "cwd": "${workspaceRoot}",
                "environment": [],
                "console": "integratedTerminal",
                "preLaunchTask": "debug"
            }
        ]
    }
    
  • 项目构建编译运行参考,运行效果

    在这里插入图片描述

QtCreator+CMake+MinGw->VsCode

  • Qt5.15.2 + QtCreator12.0.1 + VsCode1.93.0 + CMake3.28.0-rc3 + mingw81_64

  • 使用QtCreator创建以MinGw为构建套件,CMake为构建工具的项目,并使用VsCode打开

  • 运行
    在这里插入图片描述

  • 选择对应编译器(第一次时选择),会自动编译生成项目。

    在这里插入图片描述

    • 再次点击运行,会选择启动目标,一般是第一个。(这里没有截到图可参考QtCreator+CMake+Msvc->VsCode)

    • 运行效果

      在这里插入图片描述

QtCreator+CMake+Msvc->VsCode

  • Qt5.15.2 + QtCreator12.0.1 + VsCode1.93.0 + CMake3.28.0-rc3 + msvc2015

  • 使用QtCreator创建以Msvc为构建套件,CMake为构建工具的项目,并使用VsCode打开

    在这里插入图片描述

  • 点击运行,选择对应编译器(第一次时选择),会自动编译生成项目。

    在这里插入图片描述

  • 再次点击运行,会选择启动目标,一般是第一个。

    在这里插入图片描述

  • 运行效果
    在这里插入图片描述

脚本和配置的通用化

VsCode+QMake

  • 优化脚本,适配从QtCtrator创建的工程,适合使用Qt影子构建生成的构建路径。
  • 只需要设置编译器路径,编译debug还是release,工程名称TARGET_NAME,以及当前编译器是否是Msvc
@echo off
title qmake and nmake build prompt

set TARGET_NAME=VsCodeQMake
set BUILD_NAME=debug
set IS_MSVC=1
if %IS_MSVC%==1 ( set QT_DIR=D:\Programs\Qt\5.15.2\msvc2015_64
) else ( set QT_DIR=D:\Programs\Qt\5.15.2\mingw81_64
)
set PRO_DIR=%cd%

for %%A in ("%QT_DIR%") do (set "QT_KIT_NAME=%%~nxA")
for %%A in ("%QT_DIR%\..") do (set "QT_VERSION=%%~nxA")
set "QT_VERSION=%QT_VERSION:.=_%"

echo %QT_KIT_NAME%| findstr /i "msvc">nul
if errorlevel 1 ( set QT_KIT_STR=MinGW
set IS_MSVC=0
) else ( set QT_KIT_STR=%QT_KIT_NAME:~0,-3%
set IS_MSVC=1
for %%i in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do call set QT_KIT_STR=%%QT_KIT_STR:%%i=%%i%%
)

echo %QT_KIT_NAME%| findstr /i "64" >nul
if errorlevel 1 ( set BIT_STR=32bit) else ( set BIT_STR=64bit)
set QT_KIT_STR=Desktop_Qt_%QT_VERSION%_%QT_KIT_STR%_%BIT_STR%
set BUILD_DIR=%PRO_DIR%/../build-%TARGET_NAME%-%QT_KIT_STR%

set FIRST_CHAR=%BUILD_NAME:~0,1%
for %%i in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do call set FIRST_CHAR=%%FIRST_CHAR:%%i=%%i%%
set BUILD_NAME_U=%FIRST_CHAR%%BUILD_NAME:~1%

if not exist "%QT_DIR%" exit
if not exist "%PRO_DIR%" exit
if not exist "%BUILD_DIR%" (
    md "%BUILD_DIR%"
)

if %BUILD_NAME%=="debug"( set CONFIG_STR="CONFIG+=%BUILD_NAME%" "CONFIG+=console") else(set CONFIG_STR="CONFIG+=%BUILD_NAME%")

cd "%BUILD_DIR%"
if %IS_MSVC%==1 ( goto build_msvc) else ( goto build_mingw)

:build_msvc
  call "D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64
  %QT_DIR%\bin\qmake.exe %PRO_DIR%\%TARGET_NAME%.pro -spec win32-msvc %CONFIG_STR%
  set TARGET_NAME_ALL=%BUILD_DIR%\%BUILD_NAME%\%TARGET_NAME%.exe
  if exist "%TARGET_NAME_ALL%" del "%TARGET_NAME_ALL%"
  nmake %BUILD_NAME_U%
  goto end


:build_mingw
  set MINGW_PATH=%QT_DIR%\..\..\Tools\%QT_KIT_NAME:~0,7%0%QT_KIT_NAME:~-3%
  set PATH=%MINGW_PATH%\bin;%QT_DIR%\bin;%PATH%

  %QT_DIR%\bin\qmake.exe %PRO_DIR%\%TARGET_NAME%.pro -spec win32-g++ %CONFIG_STR%
  set TARGET_NAME_ALL=%BUILD_DIR%\%BUILD_NAME%\%TARGET_NAME%.exe
  if exist "%TARGET_NAME_ALL%" del "%TARGET_NAME_ALL%"
  @REM D:\Programs\Qt\Tools\QtCreator\bin\jom.exe -j4
  %MINGW_PATH%\bin\mingw32-make -f Makefile.%BUILD_NAME_U%
  goto end

:end
if not exist %BUILD_DIR%\%BUILD_NAME%\Qt5Cored.dll (
  %QT_DIR%\bin\windeployqt.exe "%TARGET_NAME_ALL%"
)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2248852.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何借助AI生成PPT,让创作轻松又高效

PPT是现代职场中不可或缺的表达工具,但同时也可能是令人抓狂的时间杀手。几页幻灯片的制作,常常需要花费数小时调整字体、配色与排版。AI的飞速发展为我们带来了革新——AI生成PPT的技术不仅让制作流程大大简化,还重新定义了效率与创意的关系…

【Linux】Make/Makefile

这个3/4行的语法和1/2行是一样的。也是依赖关系和依赖方法。 make命令扫描makefile文件时,从上向下扫描,默认形成一个目标文件。 指定make clean的时候才回去执行对应的清除。 为什么要给我们的clean.PHONY:clean声明它是伪目标呢? PHONY类…

HarmonyOS:@Provide装饰器和@Consume装饰器:与后代组件双向同步

一、前言 Provide和Consume,应用于与后代组件的双向数据同步,应用于状态数据在多个层级之间传递的场景。不同于上文提到的父子组件之间通过命名参数机制传递,Provide和Consume摆脱参数传递机制的束缚,实现跨层级传递。 其中Provi…

如何做好一份技术文档?

打造出色技术文档的艺术 在当今技术驱动的世界中,技术文档扮演着至关重要的角色。它不仅是工程师和开发人员之间交流的桥梁,更是产品和技术成功的隐形推手。一份优秀的技术文档宛如一张精准的航海图,能够引导读者穿越技术的迷雾,…

泰山众筹怎样吸引用户参与

泰山众筹项目要吸引用户参与,需要采取一系列策略来增强项目的吸引力、提高用户信任度,并激发用户的参与热情。以下是一些建议: 1. 明确项目价值与愿景 展示独特性:明确泰山众筹项目的独特卖点,如创新性、社会影响力或…

抓包之验证content-length响应头的作用

写在前面 根据http协议的规范,content-length响应头用来标记固定长度响应信息长度,http客户端,比如浏览器也会解析这个字段来进行数据的解析。 1:测试 1.1:content-length等于实际内容匹配时 使用python脚本testco…

T3 TensorFlow入门实战——天气识别

🍨 本文為🔗365天深度學習訓練營 中的學習紀錄博客🍖 原作者:K同学啊 | 接輔導、項目定制 一、前期准备 1. 导入数据 # Import the required libraries import numpy as np import os,PIL,pathlib import matplotlib.pyplot as …

✨系统设计时应时刻考虑设计模式基础原则

目录 💫单一职责原则 (Single Responsibility Principle, SRP)💫开放-封闭原则 (Open-Closed Principle, OCP)💫依赖倒转原则 (Dependency Inversion Principle, DIP)💫里氏代换原则 (Liskov Substitution Principle, LSP)&#x…

fatal error in include chain (rtthread.h):rtconfig.h file not found

项目搜索这个文件 rtconfig 找到后将其复制粘贴到 你的目录\Keil\ARM\ARMCC\include 应该还有cJSON,rtthread.h和 等也复制粘贴下

【回文数组——另类递推】

题目 代码 #include <bits/stdc.h> using namespace std; using ll long long; const int N 1e510; int a[N], b[N]; int main() {int n;cin >> n;for(int i 1; i < n; i)cin >> a[i];for(int i 1; i < n / 2; i)b[i] a[i] - a[n1-i];ll ans 0;…

SQL基础入门—— 简单查询与条件筛选

在SQL中&#xff0c;查询是从数据库中获取数据的核心操作&#xff0c;而条件筛选是查询中不可或缺的一部分。通过使用条件筛选&#xff0c;我们可以精准地从大量数据中提取我们需要的信息。本节将详细讲解如何使用SQL进行简单查询与条件筛选&#xff0c;包含常见的条件运算符和…

反向代理模块

1 概念 1.1 反向代理概念 反向代理是指以代理服务器来接收客户端的请求&#xff0c;然后将请求转发给内部网络上的服务器&#xff0c;将从服务器上得到的结果返回给客户端&#xff0c;此时代理服务器对外表现为一个反向代理服务器。 对于客户端来说&#xff0c;反向代理就相当于…

英语知识网站:Spring Boot技术构建

6系统测试 6.1概念和意义 测试的定义&#xff1a;程序测试是为了发现错误而执行程序的过程。测试(Testing)的任务与目的可以描述为&#xff1a; 目的&#xff1a;发现程序的错误&#xff1b; 任务&#xff1a;通过在计算机上执行程序&#xff0c;暴露程序中潜在的错误。 另一个…

TMS FNC UI Pack 5.4.0 for Delphi 12

TMS FNC UI Pack是适用于 Delphi 和 C Builder 的多功能 UI 控件的综合集合&#xff0c;提供跨 VCL、FMX、LCL 和 TMS WEB Core 等平台的强大功能。这个统一的组件集包括基本工具&#xff0c;如网格、规划器、树视图、功能区和丰富的编辑器&#xff0c;确保兼容性和简化的开发。…

【AIGC】国内AI工具复现GPTs效果详解

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | GPTs应用实例 文章目录 &#x1f4af;前言&#x1f4af;本文所要复现的GPTs介绍&#x1f4af;GPTs指令作为提示词在ChatGPT实现类似效果&#x1f4af;国内AI工具复现GPTs效果可能出现的问题解决方法解决后的效…

网络原理(一):应用层自定义协议的信息组织格式 HTTP 前置知识

目录 1. 应用层 2. 自定义协议 2.1 根据需求 > 明确传输信息 2.2 约定好信息组织的格式 2.2.1 行文本 2.2.2 xml 2.2.3 json 2.2.4 protobuf 3. HTTP 协议 3.1 特点 4. 抓包工具 1. 应用层 在前面的博客中, 我们了解了 TCP/IP 五层协议模型: 应用层传输层网络层…

【es6】原生js在页面上画矩形及删除的实现方法

画一个矩形&#xff0c;可以选中高亮&#xff0c;删除自己效果的实现&#xff0c;后期会丰富下细节&#xff0c;拖动及拖动调整矩形大小 实现效果 代码实现 class Draw {constructor() {this.x 0this.y 0this.disX 0this.disY 0this.startX 0this.startY 0this.mouseDo…

12 —— Webpack中向前端注入环境变量

环境变量的作用&#xff1a;根据不同环境&#xff0c;执行不同的配置 需求&#xff1a;开发模式下打印语句生效&#xff0c;生产模式下打印语句失效 —— 使用Webpack内置的DefinePlugin插件 const webpack require(webpack) module.exports { plugins: [ new webpack.Def…

Learn Git Branching 学习笔记

网址&#xff1a;Learn Git Branching 一、基础篇 1.1 git commit 1.1.1 示例&#xff08;git commit&#xff09; git commit 1.1.2 题目&#xff08;两次提交记录&#xff09; git commit git commit 前 后 1.2 git branch 1.2.1 示例&#xff08;git branch <>、git …

Unity类银河战士恶魔城学习总结(P145 Save Skill Tree 保存技能树)

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址&#xff1a;https://www.udemy.com/course/2d-rpg-alexdev/ 本章节实现了技能树的保存 警告&#xff01;&#xff01;&#xff01; 如果有LoadData&#xff08;&#xff09;和SaveData(&#xff09;…