Sublime深度定制:编译和运行 C/C++/Java 项目

转载 

不想当将军的士兵不是好士兵,不能管理项目的编辑器不是好编辑器!Sublime 作为一款优秀的编辑器,其项目管理功能自然也不能弱,管理和编译项目自然不在话下。

然而令我感到奇怪的是,我在网上浏览了 N 多 Sublime 技术帖,发现几乎全是在谈论编辑技巧、插件、皮肤等等,对于至关重要的项目管理功能却鲜有人提及,今天在下就尽绵薄之力科普一下这部分内容。

如果你符合以下情况之一,那么建议你阅读这篇文章:

  1. 只用 Sublime 编辑过单文件,并没有体验过项目管理功能;
  2. 用过 Sublime 的项目管理功能,但也仅限于把文件夹拖到左边栏中;
  3. 经常使用 Sublime 编写代码,但一遇到编译、运行等问题就头疼,只能切回到 IDE 上去。

本文以 编译和运行一个简单的 C++ helloworld 项目 为例来介绍 Sublime 的项目管理功能。

1. 准备:创建项目目录

  • 在桌面上新建一个空目录hello,然后进入目录并新建 3 个文件:hello.h,hello.cpp,main.cpp,内容分别如下:

    /* ---------- hello.h ---------- */
    void hello();
    
    /* ---------- hello.cpp ---------- */
    #include <iostream>
    #include "hello.h"
    
    void hello(){
        std::cout<<"hello world"<<std::endl;
    }
    
    /* ---------- main.cpp ---------- */
    #include "hello.h"
    
    int main()
    {
        hello();
        return 0;
    }
    

    这是一个头文件与Cpp文件分离的最简单的 C++ 项目,也就是我们的项目目录了。

  • 打开 Sublime Text,选择菜单Project->New Workspace for Project,创建一个全新的 Sublime 窗口(也可以使用快捷键Ctrl+Shift+N)

  • hello目录拖进 Sublime 窗口,这时hello目录将立即显示在 Sublime 的左侧边栏中。如果不显示,请选择菜单View->Side Bar->Show Side Bar调出 Side Bar(也可以快捷键 ctrl+k,ctrl+b)。效果如图所示:

    3310969-2d8690296b6552c3.png

    拖入文件夹后

2. 创建 Sublime 项目

  • Ctrl+Shift+P打开命令面板,输入projsave,回车保存项目,命名为hello,保存在项目目录即可

  • OK,创建项目就是这么简单

    3310969-8bd1280397cb57c8.png

    保存项目

3. 项目管理--小试牛刀

  • Ctrl+Shift+P打开命令面板,输入projedit并回车,进入项目管理文件(其实就是刚才创建的hello.sublime-project文件)。会看到如下内容:

    {
        "folders":
        [
            {
                "path": "."
            }
        ]
    }
    

    其中的"path": "."是当前项目目录的相对本文件的路径。

  • 我们在"path": "."之后追加一行内容:"name": "我的第一个C++项目",,保存,会发现左侧栏的目录名变了,如下图:

    3310969-d82d38ad346b35bc.png

    目录名称变了

    如果保存弹出错误,请确保你在"path":"."的末尾写了英文逗号。
    目录名称变成中文只是为了方便观看,实际目录名称仍然是hello,你可以去桌面检查一下。

  • 现在你看到目录里面有个hello.sublime-project,这跟我们的代码文件无关,我们不希望看到它,但又不能删除,否则项目就没了,怎么办呢?请接着刚才的行后面再追加一行:"file_exclude_patterns": ["*.sublime-project"],,保存后hello.sublime-project立即消失,世界清净了。

    但不用担心,它只是隐藏了而已,打开hello目录还能找到它。到现在为止,我们的项目管理文件是这样的:

    {
        "folders":
        [
            {
                "path": ".",
                "name": "我的第一个C++项目",
                "file_exclude_patterns": ["*.sublime-project"],
            }
        ]
    }
    

    "file_exclude_patterns"用于排除不想看到的文件,可想而知还会有"file_include_patterns"用于指定想看到的文件,更多详细信息可点击查看文末链接。

4. 编译和运行项目

  • 编译和运行项目算是项目管理的重头戏了,这里需要用到 Sublime 的 build system。很多人用 Sublime 编译和运行过单个文件,甚至能够自己创建 build system,但编译项目略有不同。

  • 项目可以像单文件一样创建 build system 吗?理论上可以,但我们一般不这样做,因为每个项目都有自己的上下文环境,所以很难写出一个对每个项目都适用的 build system。我们倾向于在项目管理文件中为每个项目分别创建 build system

  • 编译项目之前,我们首先在hello目录下新建一个build目录,存放编译后的二进制文件。这一步并非必要,但是为了规范化建议采用。

  • 我们在项目的"folders":[]字段后加上一个"build_systems"字段,创建一个 build system C++ Project。当前项目管理文件完整内容如下:

    {
        "folders":
        [
            {
                "path": ".",
                "name": "我的第一个C++项目",
                "file_exclude_patterns": ["*.sublime-project"],
            }
        ],
        "build_systems":
        [
            {
                "name": "C++ Project",
                "shell_cmd": "g++ hello.h hello.cpp main.cpp -o .\\build\\main.exe && .\\build\\main.exe",
                "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
                "working_dir": "$folder"
            }
        ]
    }
    

    这里需要注意的是:想要编译 C++ 代码,你需要先安装一款编译器。推荐使用免费的 gcc ,搜索安装 MinGW-win 即可。

    想要了解上述每个字段的具体含义,可以参考文末链接。

  • 现在,你在项目的任意一个文件中按下快捷键Ctrl+B,都会看到我们刚刚创建的C++ Project这个 build system,如下图:

    3310969-2f1829a949443f1c.png

    选择我们创建的 C++ Project

  • 选择我们创建的C++ Project并回车,会看到程序编译并正确执行,运行结果自动在下方弹出:

    3310969-56d05127863c6409.png

    运行结果

5. 项目的进一步定制

到此为止,关于项目的基本功能已经全部介绍了,还有以下几点需要提示:

  • 当你需要新建另一个项目的时候,一定要先Ctrl+Shift+N创建一个全新窗口,否则所有拖进来的目录都会更改当前项目。
  • 每个项目可以包含多个目录,但最好只有一个代码目录,否则你在不同目录下运行 build 命令可能会产生混淆。

好了,最后一步优化:我们不需要看到build目录,因为它里面都是二进制文件。我们将build目录加入排除目录中:"folder_exclude_patterns": ["build"],时刻保持代码目录干净整洁有利于提高我们的工作效率。

3310969-9958274104955af8.png

时刻保持代码目录干净整洁


最后,完整的项目配置文件hello.sublime-project如下:

{
    "folders":
    [
        {
            "path": ".",
            "name": "我的第一个C++项目",
            "file_exclude_patterns": ["*.sublime-project"],
            "folder_exclude_patterns": ["build"],
        }
    ],
    "build_systems":
    [
        {
            "name": "C++ Project",
            "shell_cmd": "g++ hello.h hello.cpp main.cpp -o .\\build\\main.exe && .\\build\\main.exe",
            "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
            "working_dir": "$folder"
        }
    ]
}

6. 阅读官方帮助文档

7. 相关话题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值