博主头像
諾諾の魔法ノート.

一个对精神病学、语言学、神学以及计算机感兴趣的魔法使 😁

QduOJ如何添加编程语言

假如我们正在使用QduOJ,而我们想要的语言里面没有,那么我们可以尝试在oj-server添加对应的语言环境(记得在docker-compose.yml取消只读才能添加,或者你可以build一个自己的oj-server)

然后在oj-backend下的/app/judge/languages.py中添加。

假如我们要添加Scheme的支持,那么我们只需在languages.py中添加:

_scheme_lang_config = {
    "run": {
        "exe_name": "solution.ss",
        "command": "/usr/bin/scheme --script {exe_path}",
        "seccomp_rule": "general",
        "env": default_env
    }
}

其后在languages = [...]中添加:

{"config": _scheme_lang_config, "name": "Scheme", "description": "Chez Scheme 9.5.8", "content_type": "text/scheme"},

即可。

假如我们要添加Rust的支持,那么我们只需在languages.py中添加:

_rust_lang_config = {
    "compile": {
        "src_name": "main.rs",
        "exe_name": "main",
        "max_cpu_time": 10000,
        "max_real_time": 20000,
        "max_memory": 1024 * 1024 * 1024,
        "compile_command": "/usr/local/bin/rustc {src_path} -o {exe_path}",
    },
    "run": {
        "command": "{exe_path}",
        "seccomp_rule": "general",
        "env": default_env
    }
}

其后同样在languages = [...]中添加:

{"config": _rust_lang_config, "name": "Rust", "description": "Rust 1.71.0", "content_type": "text/rust"},

即可。

以上记得在oj-server中添加对应的语言环境。
之后在/app目录中执行

python3 manage.py shell

其后在Python的REPL中执行:

from options.options import *
SysOptions.reset_languages()

更新数据库。
之后在题目那里勾选你新增的语言即可。

QduOJ如何添加编程语言
https://rmolives.com/archives/10/
本文作者 RMOlive
发布时间 2025-01-12
许可协议 CC BY-NC-SA 4.0