Manim Community v0.18.1。manim 本体由 uv 装(纯 pip);pycairo/manimpango 的原生依赖 —— xcb-free 的 cairo/pango 图形栈 —— 用 xlings 装进项目 subos,免去系统 gcc 的 xcb 坑。
# 1. 一次性:装图形栈 + uv 进项目 subos(cairo/pango 的 deps 自动拉全树)
xlings install cairo pango uv
# 2. 渲染:用启动器(已封装 PKG_CONFIG_PATH / uv 依赖 / pygments pin,免手输环境变量)
videos/render.sh cpp11/00-auto-and-decltype.py # 默认 -ql 快预览
videos/render.sh cpp11/00-auto-and-decltype.py -qh # 高清 1080p启动器封装了什么 / 手动等价命令
videos/render.sh <场景> [manim参数] 等价于(在仓库根执行):
SR=$PWD/.xlings/subos/_/usr # 项目匿名 subos —— xlings install 装在这, xlings-gcc 默认也搜它
PKG_CONFIG_PATH=$SR/lib/pkgconfig \
uv run --with "manim==0.18.1" --with "pygments==2.17.2" \
manim -ql videos/cpp11/00-auto-and-decltype.pyPKG_CONFIG_PATH指向项目 subos,让 pkg-config 命中 xcb-free cairo(而非宿主 apt 带 xcb 的)——仅首次/清缓存后编译 pycairo/manimpango 时需要,编好的 wheel 被 uv 缓存后可省。pygments==2.17.2避开 manim 0.18.1 的Code渲染#CCCbug。- 兜底(没装生态栈时,用系统 gcc 绕开 xlings-gcc 的 xcb 坑):
CC=/usr/bin/gcc CXX=/usr/bin/g++ \ uv run --with "manim==0.18.1" --with "pygments==2.17.2" \ manim -ql videos/cpp11/00-auto-and-decltype.py
| c++标准 | 特性 | 标题 | 练习代码/视频 | 备注 |
|---|---|---|---|---|
| 引导 | 项目使用教程/引导 |
hello mcpp | docs / code / video | |
| cpp11 | 00 - auto和decltype |
类型自动推导 | docs / code / video | |
| 练习讲解 | code / video | |||
| decltype注意事项 | code / video | 补充 | ||
01 - default和delete |
控制默认构造函数生成 | code / video | ||
| 类型对象行为控制示例 | code / video | |||
02 - override和final |
重写显示意图和编译器检查 | code / video | ||
| 继承和重现限制 | code / video | |||
03 - 后置返回值类型 |
后置返回值类型基础用法 | code / video | ||
04 - 右值引用 |
临时对象生命周期延长的可变性质 | code / video | ||
05 - 移动语义 |
移动构造和触发时机 | code / video | ||
| 移动赋值和触发时机 | code / video | |||
| 移动的不是对象而是资源 | code / video | |||
06 - 作用域枚举 |
传统枚举的问题 | code / video | ||
| 作用域枚举的基本用法 | code / video | |||
07 - constexpr |
const和constexpr有什么不同 | code / video | ||
| 编译期计算应用示例 | code / video | |||
08 - literal-type |
什么是字面值类型 | code / video | 编译期加密库示例 | |
| 如何定义一个字面值类型 | code / video | |||
09 - 列表初始化 |
现代C++初始化风格 | code / video | ||
| -> | code1 / code2 / code3 | |||
10 - 委托构造函数 |
委托构造基础用法和注意事项 | code / video | ||
| -> | code1 | |||
11 - 继承构造函数 |
继承构造函数的基础用法 | code / video |