Cpp 编译环境笔记
整理一下关于C++编译器的笔记,这部分由于不是科班出身,没学过编译原理之类的课程,细节总是搞不懂, 本文只是基于网络搜集到的各种零散的描述进行整理,不保证正确性!!! 在本文中只关注x64平台,Windows或Linux(Ubuntu)系统的C/C++编译环境,并且不考虑交叉编译等问题。 除了系统原生的MSVC和GCC,重点关注两个概念: MinGW,MinGW-W64,MSYS... LLVM,clang 将它们并列是不合适的,因为它们不是一个层面上的东西,但是这两个确实是我在理解C++编译环境配置时遇到的最大困难。 基本概念 c 语言的标准分成两部分: 语法,指导我们应该怎么编程,在源文件中必须满足某些规则 标准库(头文件),相对于系统层面向 c 语言程序提供的一些基础接口,例如printf等,但语法标准只是规定了接口的形式,并没有具体的实现 对 c 语言的支持,也分成两个部分: c...
GoogleTest + CTest 配置与使用
现在我们关注CMake项目中的测试部分,具体包括GoogleTest和CTest的使用。 概述 Google Test(简称为 gtest)是 Google 开发的一个开源的 C++ 测试框架,用于编写和运行单元测试、集成测试和功能测试。主要特点包括: 支持各种平台和编译器,包括 Linux、Windows 和 macOS,并且与主流的 C++ 编译器兼容。 提供了丰富的断言宏,如 EXPECT_EQ、ASSERT_TRUE 等,用于验证代码行为是否符合预期。 支持参数化测试,允许以不同的参数运行同一个测试用例。 可以生成详细的测试报告,包括测试通过的数量、失败的数量、失败的原因等信息。 可以扩展测试框架,编写自定义的测试扩展和断言宏。 CTest 是 CMake 附带的一个测试工具,用于管理和执行项目中的测试。它是一个命令行工具,可以通过简单的命令来执行测试,并生成测试报告。主要特点包括: 可以在构建系统中自动发现项目中的测试,并执行它们。 支持各种测试框架,包括 Google Test、Catch、Boost.Test...
CUDA学习笔记——基本概念与CUDA下载
显卡 显卡(Graphics card),全称显示接口卡,又称显示适配器,是计算机的重要硬件组件之一,负责图形处理和显示输出。显卡通常由 GPU(图形处理器)、显存、供电模块等部分组成。类似的扩展设备还有网卡、声卡等。显卡的主要功能是将计算机内部处理的数字信号转换为显示器可识别的图像信号,从而驱动屏幕显示内容。 早期显卡多集成在主板上,仅承担基础的视频输出功能,并不负责复杂的图形计算。随着技术发展,出现了独立显卡和集成显卡的区分: 集成显卡:集成在 CPU 或主板芯片组中,依赖系统内存(RAM)作为显存,无法单独更换。适用于轻量办公和日常使用。 独立显卡:作为独立硬件插入主板的...
Hexo 博客部署与重建记录
我已经记不得这是第几次重建博客了,虽然基于git仓库的备份,所有的md文件都还在,但是node_modules以及其他的环境配置会因为各种各样的原因损坏(换电脑,系统重装,迁移系统等),有必要重新梳理一下博客搭建的过程。 下面的内容主要是在Windows上和linux(WSL2)上的本地部署,以及在云服务器和Github Page的远程部署,并不涉及具体的Hexo主题以及配置细节。 生成与部署逻辑 Hexo是一个基于NodeJS的静态博客框架。首先梳理一下主要的工作逻辑: 在本地博客文件夹中,下载必要的Hexo组件并配置 在source/_posts目录中添加博客文件(markdown格式) 生成并推送 执行hexo generate生成相应的静态网页,生成的静态网页及相关资源都会存放在public/目录下 执行hexo deploy部署到远程仓库,实质上是将public/目录下的所有内容打包复制到一个git本地仓库,然后提交到指定的远程仓库 本地预览:执行hexo...
LaTeX Beamer 笔记
系统地整理一下Beamer的笔记,之前的使用只是基于某个模板的临时使用,当前的目标是整理一个简洁的自用Beamer模板。 注意到Beamer虽然属于LaTeX的一部分,但是与标准的LaTeX文档有很多的不同,部分LaTeX宏包和命令可能无法在Beamer上呈现正常的效果,这也意味着Beamer的编译错误更难改正。 笔记主要参考latex-beamer.com的英文在线教程和若干博客。 当前模板的效果如下图,模板对应的配置代码在本文最后。 极简示例 从一个最简单的例子开始 1234567891011121314151617181920212223\documentclass{beamer}% Theme choice:\usetheme{AnnArbor}% Title page details:\title{My First \LaTeX{} Presentation}\subtitle{A...
LaTeX 算法与代码环境
算法环境 algorithm2e 介绍 在LaTeX中使用伪代码来描述算法是常见的需求,LaTeX其实有很多类似名称的宏包,简单辨析一下:(参考latex 中 algorithm、algorithmic、algorithmicx、algorithm2e 的区别) algorithm 用来封装算法:给算法加上标题(caption)和标签(label),方便进行索引; algorithmic 相当于算法的内容物; algorithmicx 相当于 algorithmic 的升级版; algpseudocode 是 algorithmicx 的一种呈现方式,完整包含了algorithmicx; algorithm2e 和 algorithmicx、algorithmic 类似,也是用来描述算法的;但是其语法不如...
VSCode LaTeX WorkShop 配置
基础概念 LaTeX WorkShop 插件的编译逻辑分为两层:第一层为recipe,第二层为tool,具有如下特点: 一个recipe由若干个tool组成; 在配置文件中可以提供多个recipe和多个tool; 直接点击编译按钮会自动选择第一个(或上一次使用的)recipe来执行编译; 一个tool通常包括一个单独的编译命令加上若干参数,例如xelatex,lualatex和pdflatex等,还可能是处理参考文献需要的bibtex或biber; 一个recipe会依次执行它所包含的tool,例如: 1xelatex -> bibtex -> xelatex -> xelatex 下文中编译命令及其选项可以参考其它几篇关于LaTeX的笔记,LaTeX WorkShop 插件只是对这些编译命令进行了封装。 此外,LaTeX...