开新坑啦
突然想起来之前一直想做的 CMU 15-445 课程的 2022 Fall 学期开课了,所以决定把 Pintos 项目先放一放,开个新坑跟着 CMU 同步把这个项目做了。
课程网站:CMU 15-445/645 (FALL 2022)
老规矩课程内容就不说了,课程网站的 Schedule 页能找到每节课的 Slides 和 Video(目前还在更新中),直接来看项目。
简介如上。本项目使用 C++ 编写,标准给到了 C++17,想要完成的话至少要有 C++11 的相关知识(智能指针、右值语义等)。共有 5 个 Project:
(写本篇博客时最后一个 Project 还未放出)
其中 Project 0 比较简单,主要是测试一下 C++ 的水平。如果读或写起来比较吃力,可能需要再补一些 C++ 的知识。测试方面,项目中已经包含了一组基于 GoogleTest 的自动测试,通过后应提交到 GradeScope 网站,该网站会用一组更详细的用例测试你的程序,使用方法会在下面介绍。项目遵循 Google C++ Style Guide 编写规范,每次代码提交前必须通过 clang tidy 的格式检查,不允许出现 Warning,否则在 GradeScope 上提交评分为 0。
环境配置
课程的 Github 仓库 中已经给出了很详细的配置教程,一定注意本课程明确说明了不要将代码放到 Github 的公共仓库中。
本系列博客我也不会放出完整的 Github 仓库,只会在讲解思路时贴部分关键代码。如有问题欢迎私信交流~
项目要求 Linux 环境,实测使用 WSL2 安装 Ubuntu 20.04 LTS 系统没有任何问题。第一次编译可能比较慢,建议使用 make -j4
或 -j8
参数加速。
如果编译时出现了提示信息(不会报错,在 CMake 输出的所有信息比较靠上的地方):WARNING "!! We recommend that you use clang-12 for developing BusTub. You're using xxx, which is not clang."
,xxx
的地方可能是 g++ 或其它编译器,说明 CMake 在用那个编译器而非环境配置步骤中已经安装的 clang-12。解决方法是先找到 clang-12 的安装路径(一般在 /usr/bin/
目录),然后在项目主目录下的 CMakeLists.txt 中加入以下两行:
(博主不确定用 g++ 会不会有什么问题,但总之消灭 Warning 是好事情)
另外如果任何 sh 脚本或 make 命令运行时提示 xx\r
有问题,是由于 Windows 系统和 Linux 系统的换行符(CRLF 和 LF)不同导致的,可以参考这个回答,操作前一定要把所有更改 commit。
课程为非 CMU 学生也提供了 GradeScope 评分权限(赞),点击右上角 Sign Up,填入课程码 PXWVR5
,学校选择 CMU(不是你自己的学校),下面填自己的信息。
注册成功后可以看到已经自动加入到本课程中了。每个 Project 的 Submission 部分会指引怎么打包代码文件并提交。
至此配置完成,可以开始愉快的写码了~