tuack 导出为更好的 lemon 格式(makefile)

tuack.dump 的 lemonlime 格式只能导出数据和 .cdf 文件。这里编写了一个 makefile 文件帮助导出带有数据、样例、std、题面、题解的更好的 lemonlime 格式文件夹。

注意要在比赛日目录下运行 make,并预先创建 .targets 文件夹。

PS = coprime conv binary # 题目名称需要自己写
PWD = $(shell pwd)
DAY = $(shell basename $$PWD)
ALL: release
.targets/lemon: $(wildcard $(PS)/data/*) $(addsuffix /conf.yaml, $(PS))
	python -m tuack.dump lemon -s
	rm -rf lemon/data
	touch $@
.targets/statement-ccc-md: $(addsuffix /statement/zh-cn.md, $(PS))
	python -m tuack.ren ccc-md -i .. -p $(DAY) -s
	touch $@
.targets/statement-noi:$(addsuffix /statement/zh-cn.md, $(PS))
	python -m tuack.ren noi -i .. -p $(DAY) -s
	touch $@
.targets/release-data: $(wildcard $(PS)/data/*)
	mkdir -p release/data
	for p in $(PS); do ln -snf $(PWD)/$$p/data release/data/$$p; done
	touch $@
.targets/release-down: $(wildcard $(PS)/down/*)
	mkdir -p release/down
	for p in $(PS); do ln -snf $(PWD)/$$p/down release/down/$$p; done
	touch $@
release/$(DAY).cdf: .targets/lemon
	cp lemon/$(DAY).cdf $@
release/statement.md: .targets/statement-ccc-md
	> $@
	for p in $(PS); do \
		echo "# $$p" >> $@; \
		cat ../statements/ccc/$(DAY)/$$p.md >> $@; \
		echo >> $@; \
		echo >> $@; \
	done
release/solution.md: $(addsuffix /solution/zh-cn.md, $(PS))
	echo > $@
	for p in $(PS); do \
		cat $$p/solution/zh-cn.md >> $@; \
	done
release/$(DAY).pdf: .targets/statement-noi
	cp ../statements/noi/$(DAY).pdf $@
.targets/release-std: $(addsuffix /yuki/std.cpp, $(PS))
	mkdir -p release/source/std
	for p in $(PS); do \
		cp $$p/yuki/std.cpp release/source/std/$$p.cpp; \
	done # 注意,每个人的 std 的位置都不一样,自己改一下
	touch $@
release: .targets/release-down .targets/release-data release/$(DAY).cdf release/$(DAY).pdf release/statement.md release/solution.md .targets/release-std
.PHONY: clean
clean:
	rm -rf release lemon ../statements/ccc/$(DAY) ../statements/noi/$(DAY).pdf .targets/*
posted @ 2025-03-17 21:20  caijianhong  阅读(35)  评论(0)    收藏  举报