IDE配置 Clion搭建算法竞赛用的IDE

我的整个项目文件已经上传到github了,直接下载导入就可以直接使用了:

https://github.com/onglu1/acm

 

在准备配置自己的IDE之前,首先讲解一下我比较需要的几个功能。

单文件编译运行:有时候需要开很多文件进行单个编译生成对应exe,比如在对拍的时候就要用到。

文件读入和输出:手动复制粘贴样例十分麻烦,不如利用文件进行读入和输出,这样可以方便查看和修改样例。

一键编译运行:既有一键编译运行,又有分离的编译运行按键。

自动生成模板:在打开项目时会有默认模板。

 

首先解决单文件编译运行。这个可以在Settings-Tools-External Tools里面新建编译运行脚本。

 

 

 编译脚本如下:

Arguments里面是:

-std=c++14 "$FileName$" -o "$FileDir$/$FileNameWithoutAllExtensions$" -D LOCAL

  

 

运行脚本如下:

program里面是:

"$FileDir$\$FileNameWithoutAllExtensions$"

  

接下来在keymap里面绑定这两个键的快捷键,就可以实现编译了,编译完后会在当前文件的目录内生成一个 文件名.exe文件。

 

 

 文件读入和输出在上面一步已经考虑了,我们在编译时定义了一个环境变量LOCAL,只需要ifdef就可以了,在模板中插入以下这段话,注意路径名最好写成绝对路径,因为每次编译的文件可以在不同文件夹内,相对路径就会找不到同一个地方。

#ifdef LOCAL
    freopen("C:\\Users\\onglu\\CLionProjects\\acm\\data.in", "r", stdin);
    freopen("C:\\Users\\onglu\\CLionProjects\\acm\\data.out", "w", stdout);
#endif

自动生成的模板文件可以通过更改Settings-Editor-File and Code Templates-C Source File实现。

不过这里面好像宏定义有另外的格式,可以仿照我的代码改。

#parse("C File Header.h")
#if (${HEADER_FILENAME})
#[[#include]]# "${HEADER_FILENAME}"
#end
#[[#include]]# <bits/stdc++.h>

#[[#define]]# all(a) a.begin(),a.end()
#[[#define]]# rall(a) a.rbegin(),a.rend()

#[[#define]]# endl '\n'
#[[#define]]# lson (rt << 1)
#[[#define]]# rson (rt << 1 | 1)
#[[#define]]# Mid ((l + r) / 2)
//#[[#define]]# int long long
using namespace std;
void work() {
    
}

signed main() {
#ifdef LOCAL
    freopen("C:\\Users\\onglu\\CLionProjects\\acm\\data.in", "r", stdin);
    freopen("C:\\Users\\onglu\\CLionProjects\\acm\\data.out", "w", stdout);
#endif
    ios ::sync_with_stdio(false);
    cin.tie(0);
    int Case = 0;
    cin >> Case;
    while(Case--) work();
    return 0;
}

一键编译运行
这里我们需要用到configuration来完成了。
右上角那个绿色箭头旁边的。

 

进入Edit Configurations,新建一个Custom Build Application

 

 

 会出现以下的界面,这里面Target就是这个工具要执行的脚本,执行完脚本后,他会运行一个可执行文件,它的路径在Executable中填入。

 

 

 点击Configure Custom Build Targets,在弹出的选项框里面,按照之前那个方法,添加一个编译工具。

是因为要生成a.exe文件,Arguments要改成:

-std=c++14 "$FileDir$\$FileName$" -o "$ProjectFileDir$\a.exe" -D LOCAL

  

 

 

 然后在项目的根目录下创建一个a.exe文件。

 

然后在刚刚的Executable中选择这个a.exe,接下来只要把configuration切换成你创建的这个东西就可以一键编译运行了。

可以把输入文件和输出文件拖到窗口的右边,十分方便修改输入输出。

 

但是自定义配置文件一点不好的是不能debug(或者是我不知道怎么debug)。

如果需要用debug功能,就把代码复制到原来的main函数中,然后换成原来的配置就有debug功能了。

不过这时候原来的配置没有定义LOCAL,文件输入输出是不好使的,可以手动输入,也可以取消ifdef解决。

 

posted @ 2022-03-05 09:41  _onglu  阅读(1084)  评论(0编辑  收藏  举报