3.8 构建和安装 submit client

domjudge 支持两种提交方式: 一种是通过命令行提交, 一种是通过 web 界面提交; 经验证明, 每种方式都有用户偏爱于它

命令行的 submit client 在内部使用 API 借口发送提交请求; 这需要在编译时使用 libcURLlibjsonCPP 开发库; 可以使用 --enable-static-linkingconfigure 选项静态链接 submit client 以避免运行时的依赖性

submit client 可以使用 make submitclient 进行编译; 没有 make target 用以安装 submit client, 因为它的位置很大程度上取决与环境; 例如, 你可以将其复制到所有队伍的计算机中或将它放在网络文件系统上; 注意, 如果队伍计算机和裁判机的系统(版本)不同, 则需要为该操作系统(版本)构建 submit client

submit client 需要知道 domserver 的网址; 这可以通过命令行选项或环境变量传递; 后者更具易用性; 这个设置在脚本 submit_wrapper.sh 中; 浏览此脚本以获取详细的设置方法

submit client 连接 Domjudge API 既能通过设置的认证方案进行认证, 也能通过 Domjudge 内用户的用户名密码的组合进行认证(这样会忽略认证方案); 例如: 当启用 IPADDRESS 方案, 不需要额外的设置, 提交会来自各个队伍的 ip 地址; 当使用其他方案时, 你可能需要把用户名和密码一同放在队伍账户里以供 submit client 使用; 在这种情况下, 这些密码始终在 Domjudge 内部使用, 因此, 在使用这种方案时不要用类似 ‘LDAP’ 这样的密码; 将凭证写到 ~/.netrc 中, 例如:

  1. machine domserver.example.com login user0123 password Fba^2bHzz

查阅 netrc 的手册以获取详细信息; 你可能希望提前分发这些 .netrc 文件到队伍账户; 确保这个文件只有该用户自己可读

Windows/Cygwin 下构建 submit client

注意: 此功能不再被很好地支持; 我们建议你在 Windows 中使用 web 界面提交

submit client 也可以在 Windows 下以 Cygwin 环境编译; 首先安装 Cygwin, 然后安装 GCC, curl-devel 和一些可能要用到的软件包; 当 Cygwin 和其依赖的软件被正确安装后你就可以在 submit 目录运行 configuremake submit.exe 来创建 submit client 的二进制文件