在进行竞争性编程时,我将每个问题都放在一个包含测试和解决方案的独立目录中,类似于以下内容:
problem_a/
tests/
default.in default.out
main.c
我还喜欢能够编译解决方案(始终是单个文件)并通过向其提供输入文件并通过简单的命令行命令将结果与输出文件进行比较来运行它。我通常使用类似于以下内容的东西:
make main && (./main < tests/default.in | diff tests/default.out - ; rm main)
现在我希望能够在同一个目录中有多个解决方案(不同的编程语言)。例如,添加一个main.cpp
. 但是,这与上述命令相冲突,因为make
始终首选默认 C 规则而不是 CPP 规则。
最现实的解决方案是用额外的描述符对文件名进行后缀_c
吗_cpp
?我内心的纯粹主义者认为这是多余的,并希望有更好的方法,也许能够重新排序默认规则make
?