Skip to content

yangtb2024/cph-for-clion

Repository files navigation

项目简介

cph-for-clion 是一个用于自动化设置和测试竞赛编程题目的工具集,专为 CLion 用户设计。cp-setup.py 用于从 Competitive Companion 浏览器扩展获取题目信息,并自动创建项目目录,生成代码模板,并保存时间和空间限制。run_tests.py 用于编译和运行这些项目中的测试用例,同时尊重每个题目的时间限制和内存限制。

更新日志

最新版本:v0.2.1 - 2024年8月20日

查看更新日志

文件结构

  • cp-setup.py:从 Competitive Companion 获取题目并创建项目目录,保存相关信息,并生成 main.cpp 和测试用例文件。
  • run_tests.py:编译项目代码并运行测试用例,根据 limits.txt 中的限制条件执行测试,并支持代码变更检测以提高效率。
  • latest_problem.txt:保存最近获取的题目名称,用于快速定位项目目录。
  • limits.txt:每个项目目录下保存的时间和空间限制文件。
  • template.cpp:用户需自行准备的 C++ 代码模板文件,用于在每次创建新项目时作为 main.cpp 的基础模板。

安装与配置

先决条件

安装依赖

确保你的环境中已经安装了 Python 和 g++ 编译器。

准备 template.cpp

在使用 cp-setup.py 之前,用户需要自行创建并配置 template.cpp 文件。此文件将作为每次创建新项目时的代码模板。请将 template.cpp 放置在与 cp-setup.py 同一目录下。

template.cpp 文件可以包含您常用的代码模板,如常见的宏定义、常用的函数等。每次创建新项目时,template.cpp 的内容将被复制到新生成的 main.cpp 文件中。

在 CLion 中配置 External Tools

  1. 打开 CLion 并进入项目设置:

    • 选择 File > Settings (Windows/Linux) 或 CLion > Preferences (macOS)。
  2. 配置 cp-setup.py 作为 External Tool:

    • 在左侧菜单中找到 Tools > External Tools
    • 点击右侧的 + 号来添加一个新的工具。
    • 配置如下:
      • Name: CP Setup
      • Program: pythonpython3(取决于你的环境)
      • Arguments: "$ProjectFileDir$/cp-setup.py"
      • Working directory: "$ProjectFileDir$"
    • 点击 OK 保存配置。
  3. 配置 run_tests.py 作为 External Tool:

    • 同样在 Tools > External Tools 中添加一个新工具。
    • 配置如下:
      • Name: Run Tests
      • Program: pythonpython3
      • Arguments: "$ProjectFileDir$/run_tests.py"
      • Working directory: "$ProjectFileDir$"
    • 点击 OK 保存配置。

使用教程

1. 获取题目并创建项目目录

在 CLion 中使用 CP Setup External Tool 来获取题目并创建项目目录:

  • 选择 Tools > External Tools > CP Setup,这会启动一个 HTTP 服务器,等待 Competitive Companion 扩展发送题目信息。

打开浏览器中的编程竞赛网站,并使用 Competitive Companion 扩展将题目发送到你的服务器。cp-setup.py 会自动创建一个新目录,其中包含以下内容:

  • main.cpp:基于 template.cpp 的 C++ 代码模板,包含题目信息。
  • inputX.txtoutputX.txt:自动生成的测试用例。
  • limits.txt:题目的时间和空间限制。

2. 编译代码并运行测试

在 CLion 中使用 Run Tests External Tool 来编译代码并运行测试用例:

  • 选择 Tools > External Tools > Run Tests,它会自动使用 latest_problem.txt 中保存的最新题目名称来定位项目目录,并编译代码和运行测试用例。

运行后,你会看到 CLion 的控制台输出每个测试用例的结果。如果设置了时间和内存限制,程序会根据这些限制控制每个测试用例的运行时间和内存使用情况。

示例

假设你从 Competitive Companion 获取了一个题目 "Sample Problem",文件结构如下:

Sample_Problem/
├── main.cpp
├── input1.txt
├── input2.txt
├── output1.txt
├── output2.txt
└── limits.txt

limits.txt 可能包含以下内容:

TimeLimit: 2000 ms
MemoryLimit: 256 MB

使用 Run Tests 工具将编译 main.cpp 并依次运行 inputX.txt 文件中定义的测试用例,结果会显示在 CLion 的控制台中,并在 run_tests.log 中记录详细信息。

注意事项

  • 确保你的 template.cpp 文件已准备好,并且 cp-setup.py 能够访问到它。
  • 确保你的 C++ 代码能够从标准输入读取数据,并将结果输出到标准输出。

贡献

欢迎提交 issue 和 pull request 来改进这个项目。

许可证

该项目使用 MIT 许可证 - 详情请参阅 LICENSE 文件。

About

No description, website, or topics provided.

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages