教程

记录

A note for cmake

A Note for CMake CMake可以说是目前C++项目的标准构建系统, 尽管它有很多不足, 但是它已经成功的替换掉了autoconf这一代的构建工具. 除非有足够的理由, 在选择构建系统时, CMake总是应当第一优先考虑. 我熟悉的构建系统只有CMake和Bazel, 事实上, 如果能满足若干客观条件的话, 我更愿意使用Bazel, 不过这篇主要记录的是CMake, 所以还是以CMake为主. 在我看来, CMake主要的优缺点如下: Pros: 1. Imperative: 可以把CMake当做一个脚本语言来阅读, 这更符合大家的编程习惯. 2. Widely-used: 你只要大致会使用CMake, 那么世界上的大部分项目都可以被你使用了. 3. Easy-at-beginning: 上手成本很低, 简单的binary和library都很容易被描述出来, 对新手友好. Cons: 1. Too many traps: 你必须要非常熟悉CMake, 才能写出稳定可靠的CMake脚本, 否则, 处处都有坑你的陷阱. reddit上曾有一个评

By Edimetia3D

未分类

Tablegen Language Tutorial

Tablegen Language Tutorial 很难想象,网络上竟然搜索不到可以称为"教程"的Tablegen资料. 唯一可靠的资料是官方的ProgRef, 作为一个Reference, 它是非常合格的, 详尽而精确, 但是如果把它作为教程来阅读, 则有一些缺点: 1. 过于详尽, 即便是一些不太重要的特性,也需要用完整精确的内容来描述. 2. 过于严谨, 即便是一些简单的特性,也需要用严格的方式来描述,比如 EBNF 风格的 syntax notation, 至少我的大脑是无法 zero cost 的 parse 这种notation的. 3. 内容排布不合理, 一些不重要的特性经常位于较为靠前的位置, 且总结性的内容较少. 为了避免这些问题, 本文将按 Quick Start 风格的 Tutorial 来组织,先熟悉最核心/最重要的概念, 再学习其他的功能. 通过这篇教程,你应该能够

By Edimetia3D

未分类

Lit and FileCheck

Lit And FileCheck Lit 和 FileCheck 是 LLVM 测试中常用的工具, 尽管二者功能上是完全独立的,但是搭配起来使用会显得更加方便. Lit Lit总的来说仅仅是一个 test-launcher, 它的主要功能就是发现测试,执行测试,收集结果. "发现测试"主要依赖于lit.cfg(或lit.site.cfg)文件标记来实现. 当一个目录下包含这个文件时, 那么这个目录就可以被用作lit的测试根目录, lit会自动的递归进入子目录查找测试文件. "执行测试"则相对简单, 每个"lit测试文件"都应该是文本文件,这些文本文件中 RUN: 将被视作标记,这个标记之后的内容就是执行测试的shell指令, 测试指令返回0则认为测试通过, 例如 RUN: echo jojo | grep jojo. 具体来说,

By Edimetia3D