Linux系统下基于VSCode和Cmake进行C++开发

news2024/11/15 19:39:50

目录

  • 简介
  • 一、GCC编译器
    • 1.1创建cpp文件
    • 1.2编译过程
    • 1.3g++重要编译参数
  • 二、GDB调试器
  • 三、IDE-VScode
    • 3.1 VSCode常用快捷键
    • 3.2 swap测试
  • 四、CMake
    • 4.1CMake介绍
    • 4.2 CMake语法特性介绍
    • 4.3 CMake重要指令和常用变量
    • 4.4 CMake编译流程
    • 4.5CMake代码实践
  • 五、使用VSCode进行完整项目开发【实战】
    • 5.1 launch.json和task.json配置
  • 六、总结

简介

在 Linux 系统中,使用 Visual Studio Code (VSCode) 和 CMake 进行 C++ 开发是十分方便的。以下是整个工作流的简介:

  • VSCode 是由微软出品的一款轻量级、高度可扩展的代码编辑器,它支持几乎所有的主流编程语言,可以在多种操作系统(包括 Linux)上运行。

  • CMake 是一个开源的跨平台自动化建构系统,它用于控制编译过程,使其在多个平台上能够相同。在 VSCode 中,我们使用“CMake Tools”插件来调用和使用 CMake。

  • 在进行 C++ 开发时,首先在 VSCode 中创建一个新的工作区,并在其中创建源代码文件 .cpp 和你的 CMakeLists.txt 文件。CMakeLists.txt 是 CMake 的配置文件,其中定义了项目的编译和链接规则

  • 安装并配置好 CMake Tools 插件后,你可以选择 CMake Kit(对应你的编译器),并设置你的构建类型(例如 Debug 或 Release)。

  • 接下来,你可以使用 VSCode 的内置终端运行 CMake 命令,这将触发 CMake 对项目的编译。在编译完成后,你可以直接在 VSCode 中运行和调试你的应用。

通过 CMake 和 VSCode,你可以轻松地在 Linux 上进行 C++ 的编写、编译、运行和调试。并且,由于 CMake 具有良好的平台兼容性,你的代码可以很容易地在其它系统(如 windows,macOS)上重新编译和运行

这种开发方式允许你专注于代码的编写,而将复杂的编译和链接过程由 CMake 自动化处理。同时,VSCode 提供的丰富插件也可以大大提高你的开发效率。

一、GCC编译器

1.1创建cpp文件

使用vim编辑器创建一个cpp文件:

lg@lg-virtual-machine:~/cmake_class/0310$ vim test.cpp
#include<iostream>
using namespace std;

int main(){
  cout<<"hh"<<endl;
  return 0;
}

使用如下命令保存cpp文件并退出:

:wq

1.2编译过程

将cpp代码编译为机器语言的目标二进制代码 .o文件 ,并指定一个可执行文件的文件名:

lg@lg-virtual-machine:~/cmake_class/0310$ g++ test.cpp -o test
lg@lg-virtual-machine:~/cmake_class/0310$ ./test 
hh

1.3g++重要编译参数

  • -g 编译带调试信息的可执行文件
# -g 选项告诉 GCC 产生能被 GNU 调试器GDB使用的调试信息,以调试程序。
# 产生带调试信息的可执行文件test
g++ -g test.cpp
  • -O[n] 优化源代码
 ## 所谓优化,例如省略掉代码中从未使用过的变量、直接将常量表达式用结果值代替等等,这些操作
会缩减目标文件所包含的代码量,提高最终生成的可执行文件的运行效率。
# -O 选项告诉 g++ 对源代码进行基本优化。这些优化在大多数情况下都会使程序执行的更快。 -O2 
选项告诉 g++ 产生尽可能小和尽可能快的代码。 如-O2,-O3,-On(n 常为03)
# -O 同时减小代码的长度和执行时间,其效果等价于-O1
# -O0 表示不做优化
# -O1 为默认优化
# -O2 除了完成-O1的优化之外,还进行一些额外的调整工作,如指令调整等。
# -O3 则包括循环展开和其他一些与处理特性相关的优化工作。
# 选项将使编译的速度比使用 -O 时慢, 但通常产生的代码执行速度会更快。
# 使用 -O2优化源代码,并输出可执行文件
g++ -O2 test.cpp
  • -l 和 -L 指定库文件 | 指定库文件路径
# -l参数(小写)就是用来指定程序要链接的库,-l参数紧接着就是库名
# 在/lib和/usr/lib和/usr/local/lib里的库直接用-l参数就能链接
# 链接glog库
g++ -lglog test.cpp
# 如果库文件没放在上面三个目录里,需要使用-L参数(大写)指定库文件所在目录
# -L参数跟着的是库文件所在的目录名
# 链接mytest库,libmytest.so在/home/bing/mytestlibfolder目录下
g++ -L/home/bing/mytestlibfolder -lmytest test.cpp

二、GDB调试器

GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。你可以使用GDB调试各种被编译成可执行程序的语言,如C、C++、Java等。它提供了很多高级功能,例如设置断点、查看程序变量、单步执行等。
下面是一些基础的GDB命令:

  • gdb program:打开你的程序
  • run:运行你的程序
  • break:在特定的位置设置一个断点
  • step:执行下一行代码,如果下一行是一个函数调用,那么进入到这个函数中
  • next:执行下一行代码,不进入函数
  • print:打印变量的值
  • continue:继续执行程序,直到下一个断点或者程序结束
  • quit:退出GDB

为了使用GDB,在编译你的程序时,需要包含-g选项来生成额外的调试信息。

在GDB调试程序时,你可以设置断点来暂停程序的执行,观察和改变变量的值,然后继续执行,这对于查找和理解程序问题是十分有用的。

三、IDE-VScode

3.1 VSCode常用快捷键

Visual Studio Code(VSCode)是一款非常流行的开源文本编辑器,它支持多种编程语言,并且拥有许多可以提高编程效率的快捷键。这里将列举一些常用的VSCode快捷键:

  • Ctrl + \:分屏显示
  • Ctrl + P:快速打开文件
  • Ctrl + Shift + P:显示所有命令
  • Ctrl + B:隐藏或显示侧边栏
  • Ctrl + Shift + E:显示资源管理器 / 切换焦点到侧边栏
  • Ctrl + G:跳转到指定行数
  • Ctrl + F:当前文件内搜索
  • Ctrl + H:当前文件内搜索并替换
  • Ctrl + D:选取单词 - 可逐个添加相同的单词进行多项选择
  • Ctrl + Shift + L:选择所有出现在当前文件中的相同的词
  • Alt + Up 或 Alt + Down:上移或下移一行
  • Shift + Alt + Up 或 Shift + Alt + Down:向上或向下复制一行
  • Ctrl + Space:代码建议(代码补全)
  • F12:进入定义
  • Alt + F12:显示定义预览眼睛
  • Ctrl + Shift + F:全局搜寻文件内容
  • Ctrl + ~:打开或关闭终端
  • Ctrl + S:保存当前文件
  • Ctrl + /:注释或取消注释
  • Alt + Z:自动换行
  • Ctrl + Shift + I:格式化文档

VSCode的快捷键可以在键盘快捷方式设置中进行自定义,快捷键有助于我们更加有效率的进行编程工作。

3.2 swap测试

首先新建一个文件夹,然后点击进入该文件夹:
在这里插入图片描述
在该文件夹目录下打开VSCode:
在这里插入图片描述
进入VSCode之后,再新建include和src两个文件夹,分别用来存放头文件和源文件,最后新建一个主函数文件main.cpp:
在这里插入图片描述
代码如下:

  • swap.h:
#pragma once
#include <iostream>
using namespace std;

class myswap
{
public:
    myswap(int a, int b);

    void run();
    void printInfo();

private:
    int _a;
    int _b;
};

  • swap.cpp:
#include "swap.h"
myswap::myswap(int a, int b)
{
    this->_a = a;
    this->_b = b;
}
void myswap::run()
{
    int temp = _a;
    _a = _b;
    _b = temp;
}
void myswap::printInfo()
{
    cout << "a  =" << _a << "b = " << _b << endl;
}
  • main.cpp:
#include "swap.h"
int main(int argc, char *argv[])
{
    myswap test(2, 3);
    test.run();
    test.printInfo();
    return 0;
}

最后打开终端(Ctrl+~)编译并运行:

lg@lg-virtual-machine:~/cmake_class/0310/swapwithclass$ g++ main.cpp src/swap.cc -Iinclude -o main
lg@lg-virtual-machine:~/cmake_class/0310/swapwithclass$ ./main 
a  =3b = 2
lg@lg-virtual-machine:~/cmake_class/0310/swapwithclass$ 

四、CMake

4.1CMake介绍

CMake是一种开源的、跨平台的自动化构建系统,它用来控制软件编译过程,使得源代码与目标系统的编译过程可以分离出来。

CMake可以支持目录层次和应用程序,允许开发者在一个源代码目录树中存放不同的构建配置文件。当你的源代码由很多个不同的项目组成,每个项目都有自己的构建配置时,就可以非常洁净地采用CMake来管理。

CMake可以在一个目录里存在多个独立的构建环境,每个环境都有属于自己的构建配置。有了CMake,就可以在同一个目录里同时配备Debug版和Release版的应用程序。

CMake有许多语言的扩展阅读,例如:C,C++,Fortran,Java等,使得CMake在不同的系统和不同的编译环境下,生成适应的、原生的Makefile或项目文件,如Unix的Makefile,Visual Studio的工程文件等。

CMake的语法非常简单,大部分可用的指令和变量在CMake全局帮助文档中都有所介绍。其主要配置文件命名为CMakeLists.txt,在该文件中,你可以设置项目名称、版本、相关的环境参数等。

4.2 CMake语法特性介绍

CMake的语法相对来说比较简单,主要包括以下几种结构:

  • 1、设置变量:你可以使用set命令来设置一个变量,例如:
set(SOURCE_FILES main.cpp test.cpp)

这段代码定义了一个名为SOURCE_FILES的变量,它包含了两个文件:main.cpp和test.cpp。

  • 2、控制流语句:CMake提供了常见的条件判断和循环语句,例如if,elseif, else, endif, while,endforeach等。
if (${VARIABLE} STREQUAL "test")
    message("VARIABLE is test")
else()
    message("VARIABLE is not test")
endif()

这段代码会检查VARIABLE变量是否等于"test",然后输出相应的消息。

  • 3、包含和添加子目录:include和add_subdirectory命令可以用于组织你的CMakeLists.txt文件,让你的项目结构更清晰。

通过include(FileName),你可以把FileName文件里的内容插入到当前的CMake脚本文件中。
通过add_subdirectory(SubDirName),在生成构建系统的时候可以在子目录系中添加CMake的列表文件。

添加目标:使用add_executable、add_library等命令定义你的构建目标。

add_executable(MyApp main.cpp) 定义一个可执行目标,名为MyApp,源文件是main.cpp。
链接库:使用target_link_libraries命令链接库。

target_link_libraries(MyApp MyLibrary)

这段代码会让MyApp链接到MyLibrary库。

以上为CMake的基本语法,实际使用中,需要根据具体的项目需求,用更多的命令和更复杂的语句来编写你的CMakeLists.txt文件。

4.3 CMake重要指令和常用变量

CMake主要包括一下几个重要指令:

  • 1、cmake_minimum_required:设置对CMake版本的最低版本要求,如果不满足该版本,报告用户错误。例如:
cmake_minimum_required(VERSION 2.8.3)
  • 2、project:定义项目名称和支持的编程语言。例如:
project(HELLO C CXX)
  • 3、set:设置变量的值。例如:
set(SRC_LIST main.cpp test.cpp)
  • 4、message:输出消息,通常用于调试CMakeLists.txt文件。例如:
message(${SRC_LIST})
  • 5、add_executable:添加需要编译的可执行文件。例如:
add_executable(myapp ${SRC_LIST})
  • 6、add_library:添加库的构建命令,库源码由src2和src3命令生成。例如:
add_library(test SHARED src2.cpp src3.cpp)
  • 7、target_link_libraries:为目标添加需要的链接库。例如:
target_link_libraries(myapp test)
  • 8、find_package:用于加载配置文件,以便CMake使用。例如:
find_package(Qt5Core)
  • 9、include_directories:添加包含目录,相当于C++中的-I选项。例如:
include_directories("/usr/include/mylib")
  • 10、add_definitions:添加编译的定义,相当于C++中的-D选项。例如:
add_definitions("-DMY_DEFINE")

注意,CMake指令是不区分大小写的,你可以根据需要选择使用大写或者小写。

4.4 CMake编译流程

CMake的编译流程主要包括以下几个步骤:

  1. 编写CMakeLists.txt文件:在你的项目主目录中,编写CMakeLists.txt文件,这个文件描述了你的项目如何构建。包括指定最小版本号,指定项目名称,查找依赖库,添加子目录,添加头文件目录,添加预编译宏,生成可执行文件,添加链接库等。

  2. 生成Makefile:在命令行中切到你的项目目录,然后执行’cmake .'。这会让CMake读取CMakeLists.txt文件,并产生在你的系统上编译代码所需的Makefile文件。如果是在windows上,并且安装了Visual Studio,那么CMake还能生成.sln工程文件。

  3. 编译项目:使用’cmake --build .‘或’make’(Unix/Linux)或’msbuild myproject.sln’(Windows),编译上一步生成的Makefile。

这里的’.'是指当前目录,等同于源代码目录(build in source)。实际上,在项目中,我们经常会新建一个build目录,然后在这个目录下运行cmake. .和make,这会把所有编译生成的文件都放在这个子目录,而源码目录下只保存源码文件,这样可以使源码目录干净整洁。这种方式称为out of source构建。

注意:在使用cmake生成Makefile之后,如果修改了CMakeLists.txt或者添加了新的.cpp/.h文件,必须重新执行cmake一遍才会生效。

4.5CMake代码实践

查看cmake版本:

lg@lg-virtual-machine:~$ cmake --version 
cmake version 3.16.3
CMake suite maintained and supported by Kitware (kitware.com/cmake).

编写CMakeLists.txt:

cmake_minimum_required(VERSION 3.16.3)

project(SWAP)

set(CMAKE_BUILD_TYPE Debug)//设置cmake构建类型为debug模式

include_directories(include)//头文件

add_executable(swapmain_cmake main.cpp src/swap.cc)//可执行的二进制文件名  , 源文件

新建一个build文件夹用来存放cmake编译产生的文件:

lg@lg-virtual-machine:~/cmake_class/0310/swapwithclass$ mkdir build
lg@lg-virtual-machine:~/cmake_class/0310/swapwithclass$ cd build/
lg@lg-virtual-machine:~/cmake_class/0310/swapwithclass/build$ cmake ..
lg@lg-virtual-machine:~/cmake_class/0310/swapwithclass/build$ make
Scanning dependencies of target swapmain_cmake
[ 33%] Building CXX object CMakeFiles/swapmain_cmake.dir/main.cpp.o
[ 66%] Building CXX object CMakeFiles/swapmain_cmake.dir/src/swap.cc.o
[100%] Linking CXX executable swapmain_cmake
[100%] Built target swapmain_cmake
lg@lg-virtual-machine:~/cmake_class/0310/swapwithclass/build$ ls
CMakeCache.txt  CMakeFiles  cmake_install.cmake  Makefile  swapmain_cmake
lg@lg-virtual-machine:~/cmake_class/0310/swapwithclass/build$ ./swapmain_cmake 
a  =3b = 2

五、使用VSCode进行完整项目开发【实战】

如何进行cpp项目的编译和运行在之前已经讲过,在这一章主要讲如何使用GDB调试器进行程序的debug。

5.1 launch.json和task.json配置

参考资料:VScode 调试教程 tasks.json和launch.json的设置(超详细)
launch.json和tasks.json都是Visual Studio Code编辑器的配置文件,主要用于启动和管理你项目的构建以及调试任务。配置好这两个文件之后,不需要在终端使用命令行去一步步编译和运行,比如cmake、make、./main等命令,可以直接打断点运行调试。

  • launch.json:该文件是Visual Studio Code用来配置和管理调试会话的。在这个文件中,你可以定制多种启动调试程序的配置,包括调试脚本的路径,启动参数,环境变量等等。每一个对象代表一个独立的调试配置。通过这个文件,你可以实现多种调试环境的切换和管理。
{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/build/main",
            "args": [], 
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "Build",
            "miDebuggerPath": "/usr/bin/gdb"
        }

    ]
}
  • tasks.json:该文件用于配置Visual Studio Code自动化工作流程,如编译,测试,部署等任务。用户可以通过个性化配置的方式来设定任务运行的条件,如何运行,以及运行的产出结果。
{   
    "version": "2.0.0",
    "options": {
        "cwd": "${workspaceFolder}/build"
    },
    "tasks": [
        {
            "type": "shell",
            "label": "cmake",
            "command": "cmake",
            "args": [
                ".."
            ]
        },
        {
            "label": "make",
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "command": "make",
            "args": [

            ]
        },
        {
            "label": "Build",
			"dependsOrder": "sequence", // 按列出的顺序执行任务依赖项
            "dependsOn":[
                "cmake",
                "make"
            ]
        }
    ]
}

在这里插入图片描述
需要一样的地方
在这里插入图片描述
在这里插入图片描述

六、总结

在以后实际工作中,使用VSCode进行项目的开发,进行上面的步骤是比不可少的。本文,我们主要学会了以下几点:

  • 1、cpp工程怎么新建?
  • 2、如何使用GCC编译器和GDB调试器
  • 3、如何使用CMake?
  • 4、如何配置vscode怎么单步调试
    熟能生巧!保持进步!细心、耐心、坚持!

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

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

相关文章

Js输入输出语句

输入语法 prompt("您想输入的是&#xff1f;")输出语法: 语法1: document.write(‘要出的内容’&#xff09; <body><script>document.write("你好")document.write("<h1>我是<h1>")</script> </body>作…

基于单片机的事务管理系统

基于单片机的事务管理系统 摘 要 所谓事务管理系统就是主要用来做提醒&#xff0c;辅助以计时、秒表等的一个小系统。利用MCS51单片机即可完成系统硬件需要&#xff0c;成本低廉&#xff0c;程序简单&#xff0c;功能丰富实用&#xff0c;使用率广。根据题目的设计要求&#…

Github上哪些好用的安全工具1

专注于web漏洞挖掘、内网渗透、免杀和代码审计&#xff0c;感谢各位师傅的关注&#xff01;网安之路漫长&#xff0c;与君共勉&#xff01; URLFinder 一款快速提取网页信息的工具。该项目可以快速爬取网页上的 URL 地址、JS 文件里的 API 接口等信息&#xff0c;支持批量抓取…

QTextToSpeech的使用——Qt

前言 之前随便看了几眼QTextToSpeech的帮助就封装使用了&#xff0c;达到了效果就没再管了&#xff0c;最近需要在上面加功能&#xff08;变换语速&#xff09;&#xff0c;就写了个小Demo后&#xff0c;发现不对劲了。 出现的问题 场景 写了个队列添加到语音播放子线程中&a…

Day34:安全开发-JavaEE应用反射机制攻击链类对象成员变量方法构造方法

目录 Java-反射-Class对象类获取 Java-反射-Field成员变量类获取 Java-反射-Method成员方法类获取 Java-反射-Constructor构造方法类获取 Java-反射-不安全命令执行&反序列化链构造 思维导图 Java知识点 功能&#xff1a;数据库操作&#xff0c;文件操作&#xff0c;…

Redis:使用redis-dump导出、导入、还原数据实例

redis的备份和还原&#xff0c;借助了第三方的工具&#xff0c;redis-dump 1、安装必要环境 yum -y install zlib-devel openssl-devel2、安装redis-dump 安装ruby&#xff1a; ruby下载地址&#xff1a;https://www.ruby-lang.org/zh_cn/downloads/ 我下载的是 2.5.0 版本…

GPT-SoVITS开源音色克隆框架的训练与调试

GPT-SoVITS开源框架的报错与调试 遇到的问题解决办法 GPT-SoVITS是一款创新的跨语言音色克隆工具&#xff0c;同时也是一个非常棒的少样本中文声音克隆项目。 它是是一个开源的TTS项目&#xff0c;只需要1分钟的音频文件就可以克隆声音&#xff0c;支持将汉语、英语、日语三种…

Linux ping可以上内网,不能上外网(系统重启DNS不生效)(直接更改/etc/resolv.conf修改nameserver重启被重置)

在Linux上可以连内网&#xff0c;不能连外网 ping内网可以&#xff0c;外网不行 可能的问题&#xff1a; 1.可能设置了网络防火墙&#xff0c;阻止了服务器访问外网的请求 2.DNS解析问题&#xff1a;检查服务器的DNS设置是否正确&#xff0c;能够正确解析外部域名。如果DNS解析…

案例分析篇15:软件开发方法考点(2024年软考高级系统架构设计师冲刺知识点总结系列文章)

专栏系列文章推荐: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12593400.html 【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例分析篇-…

Vue首屏优化方案

在Vue项目中&#xff0c;引入到工程中的所有js、css文件&#xff0c;编译时都会被打包进vendor.js&#xff0c;浏览器在加载该文件之后才能开始显示首屏。若是引入的库众多&#xff0c;那么vendor.js文件体积将会相当的大&#xff0c;影响首屏的体验。可以看个例子&#xff1a;…

Linux搭建我的世界(MC)整合包服务器,All the Mods 9(ATM9)整合包开服教程

Linux使用MCSM面板搭建我的世界(Minecraft)整合包服务器&#xff0c;MC开服教程&#xff0c;All the Mods 9(ATM9)整合包搭建服务器的教程。 本教程使用Docker来运行mc服&#xff0c;可以方便切换不同Java版本&#xff0c;方便安装多个mc服版本。 视频教程&#xff1a;https:…

基于SpringBoot+Vue的电商应用系统的设计与实现

1 绪论 1.1研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;规范化管理。这样的大环境让那些止步不前&…

工具篇--从零开始学Git

一、git概述 1.1版本控制方式 集中式版本控制工具 集中式版本控制工具&#xff0c;版本库是集中存放在中央服务器的&#xff0c; team 里每个人 work 时从中央服务器下载代码&#xff0c;是必须联网才能工作&#xff0c; 局域网或互联网&#xff0c;个人修改之…

NB-IoT模块

目录 一. NB-IoT模块实物图 二. BC20/NB-IoT模块产品规格 三. 指令顺序 1. AT判断BC20模组是否正常 2. ATE0返回OK&#xff0c;已经返回回显 3. ATCSQ 4. AT_CEREG? 5. ATCGATT? 6. ATCGATT? 四. OneNet 连接 1. AT 查看 NB(当前NB)&#xff0c;云平台根据这两个…

Three 材质纹理 (总结三)

THREE.MeshLambertMaterial&#xff08;网格 Lambert 材质&#xff09; 该材质使用基于非物理的Lambertian模型来计算反射率。可以用来创建暗淡的并不光亮的表面&#xff0c;该材质非常易用&#xff0c;而且会与场景中的光源产生反应。 MeshLambertMaterial属性 # .color : …

OpenCASCADE开发指南:专栏内容介绍及目录

1、专栏介绍 1.1 几何内核 在三维建模软件和仿真软件中&#xff0c;我们经常能听到到“几何内核”一词。那么几何内核是究竟什么是几何建模内核&#xff1f;先说结论&#xff1a;几何没有内核&#xff0c;就没有CAD软件&#xff01; 从软件的历史中可以清楚地看到&#xff0c;…

win10txt文件丢失怎么找回?六大方法,总有一款适合你

在日常工作和生活中&#xff0c;TXT文件作为一种常见的纯文本格式&#xff0c;经常用于记录笔记、保存代码或存储其他文本信息。然而&#xff0c;有时我们可能会因为各种原因&#xff0c;导致Win10系统中的TXT文件丢失。面对这种情况&#xff0c;许多用户可能会感到焦虑和无助。…

【读论文】【精读】3D Gaussian Splatting for Real-Time Radiance Field Rendering

文章目录 1. What&#xff1a;2. Why&#xff1a;3. How&#xff1a;3.1 Real-time rendering3.2 Adaptive Control of Gaussians3.3 Differentiable 3D Gaussian splatting 4. Self-thoughts 1. What&#xff1a; What kind of thing is this article going to do (from the a…

FL Studio21水果软件2024最新中文版功能介绍及下载

FL Studio21&#xff0c;也被众多用户亲切地称为“水果”&#xff0c;是一款功能强大的数字音乐工作站软件。它为用户提供了一个完整的音乐制作环境&#xff0c;从编曲、录音、编辑到混音&#xff0c;几乎涵盖了音乐制作的所有环节。 FL Studio 21 Win-安装包下载如下: https:…

蓝桥杯深度优先搜索|剪枝|N皇后问题|路径之谜(C++)

搜索&#xff1a;暴力法算法思想的具体实现 搜索&#xff1a;通用的方法&#xff0c;一个问题如果比较难&#xff0c;那么先尝试一下搜索&#xff0c;或许能启发出更好的算法 技巧&#xff1a;竞赛时遇到不会的难题&#xff0c;用搜索提交一下&#xff0c;说不定部分判题数据很…