感谢来读,语文不好,表达有问题的还请指出。以下这段只是我的吐槽,可以跳过。
这个“助手”是这样来的:写题的时候,用了vscode后根本无法忍受devcpp的“丑陋”,然而vscode对C++的编译支持的并不好,一时间陷入两难。最终决定写个程序简化编译等做题中常用的功能,现在配合vscode十分舒服。
介绍
- 名称:acm(因为是码题用的)
- 功能:
- 配置外部编译器编译
- 使用代码模板
- 自动输入输出
- 自动测量程序运行时间与使用内存(准确度一般)
- 自动使用用户提供的数据判题(具体见后文)。
- 版本:v1.0
- 作者:Stardust D.L.(Liang)
- 支持系统:原生Windows 10,Mac OS 10+
下载
个人使用体会
我比较习惯编辑器+命令行的写程序方式,然后每次编译都要写 g++ a.cpp -o a
这么长,很烦,然后就写了这么个简化命令的程序。不过对于习惯GUI的人,可能体验上还是不如GUI。
觉得最好用的是 check
功能,每次写题,先把输入和标准输出打进去,然后改完代码直接check,就能知道这组数据过没过,比以前每次重新输入,目测比对方便多了(已经习惯这种方式了)。
不过怎么着也是个自己用的工具,写的还很简单,不过平常写题用着还是比较方便的。发出来要是能帮到人就很开心了。
至于这个怎么用。。。看看下面的就好了,比C++简单多了(233
另外一些具体内容我没写,(懒
使用
第0步
- 解压就好了
- 如果需要请将解压目录加入系统环境变量(*)
- 请在使用前先将命令行当前目录指定到码题的工作目录(
cd myfolder
)
第1步:准备
- 命令行调用 acm(如果您已完成(*))
- 如果当前目录不存在acm环境,会显示白色字样,已存在的话会显示绿色
Loaded
字样。接下来等待输入命令 - 等待输入的行头可能有两种:
>
c.cpp >
:当前代码文件为c.cpp
第2步:命令介绍
调用完 init
命令就先去配置吧(第3步),配置完再开始用别的命令。
init
初始化acm环境clear
清除acm环境exit
退出cls
清空命令行reload
重新载入(设置等)build
编译当前文件run
运行已编译的文件br
等价于build and runnew <filename> [-c]
新建文件,filename
请带上扩展名,这样系统会自动匹配您提供的代码模板,-c
可选,指示系统自动将此文件设置为当前文件。kill
干掉运行中的程序(比如死循环了TAT)check
对当前代码,自动编译执行,自动输入输出,自动比对答案。(个人最满意的功能),会显示评测结果和运行时间内存等,注意这里判题是简单比对,一般是忽视行尾空格的(其实就是系统命令fc
)
关于check功能
请将输入写到\.acm\input.in
,标准输出写到\.acm\std.ans
,然后调用check
。
第3步:系统配置
这里很关键,不过也简单。
建议安装MinGW(Devcpp 自带,在安装目录的MinGW64目录下),这样下面的编译器设置就可以指定为 类似这样的
D:\MinGW\bin\g++.exe
acm环境初始化后,系统会在当前目录创建隐藏文件夹.acm
,介绍如下:
1 | .acm\ |
相关配置文件设置:(能看懂的我就不写了,以下给出的都是建议配置(当然系统环境不同可能会有调整),另外文件为json格式,默认无缩进,可以使用代码格式化工具加上缩进(比如vscode使用快捷键 alt+shift+F
)
重点
一般只有config.json中的 UseFileInput,UseFileOutput
改为true
,builder.json的编译器指定(如果没有把 g++ 加到环境变量中的话)两处需要修改。
checker.json
1 | { |
builder.json
1 | { |
config.json
1 | { |
修改配置后一定要用reload
命令重新加载,不然配置只有下次启动acm时才生效。
备注
个人感觉最佳搭配编辑器为 Visual Code,使用其内置的终端可以使得编辑与执行始终在一个界面。
可能会有Bug,使用时请留意。
谢谢使用。
本文档可能会有修改。
展望
- 可能以后会加上HDU,POJ自动提交功能(其实已经实现了,然而没空写细节)
- 理论上是能跨平台的(比如支持Linux,Mac OS),然而不同系统API不同,技术所限,暂时不支持。要是有同学会 .Net Core 还请教教我。
- 还有什么建议欢迎发到我邮箱。