原始笔记只记了几条编译命令和一个常见报错,这里整理成“准备环境 + 编译 + 使用提醒”的最小版本。
它是干什么的
Templight 更适合在下面这种场景里使用:
- 模板实例化特别深
- 编译时间异常长
- 你想看清楚到底是哪一段模板元编程把编译器拖慢了
编译准备
原始记录里的路径是:
- 下载
llvm-project - 进入
clang/tools目录 - 下载
templight工程 - 回到
llvm-project根目录开始配置和编译
配置命令
cmake -S llvm -B build -DLLVM_ENABLE_PROJECTS=clang -DCMAKE_BUILD_TYPE=Release
如果要显式指定 clang:
cmake -S llvm -B build \
-DLLVM_ENABLE_PROJECTS=clang \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=/usr/bin/clang \
-DCMAKE_CXX_COMPILER=/usr/bin/clang++
然后进入构建目录:
cd build
make clang
一个常见报错
原始记录里保留的典型错误是:
clang: error: unknown argument: '-fno-lifetime-dse'
make[2]: *** [TemplightAction.cpp.o] Error 1
make[1]: *** [obj.clangTemplight.dir/all] Error 2
make: *** [all] Error 2
这类问题通常说明:
- 当前编译器版本和工程期望的不一致
- 某些参数只被特定 clang / gcc 版本支持
- 混用了系统编译器和自己想要的工具链
原始经验里最值得保留的一点
指定 ninja 编译失败后,清理工程,再改回 make 重新编译,有时反而更容易过。
也就是说,这篇里真正的经验不是“必须用 make”,而是:先把工具链和参数版本对齐,再决定生成器。
在线替代入口
如果只是想快速看模板推导或做表达式可视化,有时在线工具更省事:
它不能完全替代 Templight,但很适合先做快速观察。
FEATURED TAGS
Git
Cheat Sheet
Markdown
Tools
C++
Linker
Thread
Linux
TCP
Network
GDB
Debug
leetcode
链表
WSL
Ubuntu
Windows
Linux Kernel
GCC
Android
adb
Troubleshooting
Profiling
Sanitizer
glibc
MySQL
Database
Python
curl
Build
ELF
clang-format
CMake
Graphviz
Performance
vcpkg
Protobuf
排查
速查
内存
STL
调试
性能分析
性能
读书笔记
方法论
架构
网络
Timer
mbedTLS
TLS
安全
负载均衡
脚本
工具
LRU
二叉树
BST
中序遍历
回溯
二分查找
优先队列
排序
旋转数组
jenkins
部署