当前位置: 首页 > news >正文

DAY2:插件学习

文章目录

  • 插件学习
    • Clang
    • Google Test
    • CMake
    • Doxygen
  • 收获

插件学习

Clang

是什么:Clang 是指 LLVM 项目的编译器的前端部分,支持对 C 家族语言(C、C++、Objective-C)的编译。Clang 的功能包括:词法分析、语法分析、语义分析、生成中间中间代码 LLVM Intermediate Representation (LLVM IR)。

在这里插入图片描述

为什么:模块化设计,各模块职责单一,功能清晰简单容易理解,可复用可移植性强,易于扩展增强
怎么做:

  • Clang入门教程

  • llvm编译的基本概念和流程.md

在这里插入图片描述

Google Test

是什么:GoogleTest helps you write better C++ tests.

为什么:Since GoogleTest is based on the popular xUnit architecture

怎么做:

  • Gtest入门1:安装和使用
  • GoogleTest Primer-需要细看
  • GPT-4
    在这里插入图片描述

在这里插入图片描述

写测试程序时,无法接收std::cin,解决办法是将launch.json文件中externalConsole字段设为true,即VSCode 将在外部终端中运行程序。

CMake

是什么:开源的跨平台构建系统,主要用于管理项目的构建过程。它通过使用配置文件(CMakeLists.txt)来生成平台和编译器无关的构建指令(例如,Makefile 或 Visual Studio 项目文件)。(–GPT 4)
为什么:从源代码到可执行文件的构建指令很繁杂同时各个平台不一致,而CMake使得这个过程在不同平台标准化。
怎么做:多写CMakeLists.txt,搞懂常用的命令(例如include_directories, link_directories, target_link_libraries
难点:容易混淆一些常用命令的作用:

  • include_directories: 指定头文件的路径,使编译器能够找到库的头文件
  • link_directories: 指定库文件的路径,使编译器知道在哪里查找库文件。
  • target_link_libraries: 将库文件实际链接到可执行文件
    例如:
cmake_minimum_required(VERSION 3.10)project(QuickSort)set(CMAKE_CXX_STANDARD 14)# 设置googletest的安装路径
set(GTEST_ROOT /Users/XXXX/gtest/googletest/_install)# 包含Google Test头文件目录(指定头文件的路径,使编译器能够找到 gtest 的头文件。)
include_directories(${GTEST_ROOT}/include)# 链接Google Test库目录(告诉编译器库文件所在的路径。)
link_directories(${GTEST_ROOT}/lib)# 添加源文件
add_executable(QuickSort quicksort.cpp)# 链接Google Test库(将库文件链接到指定的目标可执行文件或库。)
target_link_libraries(QuickSort gtest gtest_main)

Doxygen

是什么:一个将文件的特定注释转化为文档的工具。
为什么:一些开源项目会使用音视频开发ffmpeg
怎么做:Doxygen入门

收获

  • gtest不需要手写main

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Word】快速对齐目录
  • [Spring] SpringBoot基本配置与快速上手
  • QImage 的图片可以直接显示吗
  • python调用串口收发数据
  • 用WPF实现的窗体是怎么运行的?
  • 反向代理概念
  • app: 和 android:的区别
  • Flutter——最详细(Badge)使用教程
  • 用灵活的依赖排除策略来规避不必要的依赖关系
  • MAVEN中settings.xml文件中,<mirrors> 元素怎么写?
  • 科技赋能智慧应急:“数字孪生+无人机”在防汛救灾中的应用
  • 短视频矩阵系统源码开发-开发思路
  • SVN 80道面试题及参考答案(2万字长文)
  • vmware workstation安装debian虚拟机有时无法访问windows共享文件夹
  • uniapp 数据父传子
  • 【刷算法】从上往下打印二叉树
  • 07.Android之多媒体问题
  • echarts的各种常用效果展示
  • Markdown 语法简单说明
  • springMvc学习笔记(2)
  • webgl (原生)基础入门指南【一】
  • webpack入门学习手记(二)
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 翻译:Hystrix - How To Use
  • 好的网址,关于.net 4.0 ,vs 2010
  • 力扣(LeetCode)56
  • 走向全栈之MongoDB的使用
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • 阿里云ACE认证之理解CDN技术
  • ​2021半年盘点,不想你错过的重磅新书
  • ​ssh免密码登录设置及问题总结
  • ​如何防止网络攻击?
  • #ifdef 的技巧用法
  • #pragma data_seg 共享数据区(转)
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (2015)JS ES6 必知的十个 特性
  • (C++)八皇后问题
  • (solr系列:一)使用tomcat部署solr服务
  • (八)c52学习之旅-中断实验
  • (转)ABI是什么
  • (转)fock函数详解
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (转)树状数组
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • 、写入Shellcode到注册表上线
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .bat批处理(六):替换字符串中匹配的子串
  • .net core 控制台应用程序读取配置文件app.config
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • [@Controller]4 详解@ModelAttribute
  • [20150904]exp slow.txt
  • [23] 4K4D: Real-Time 4D View Synthesis at 4K Resolution