干中学

最近在学习一个 C++ 项目,需要重新把以前的课本拿起来。学习的最好方法,尤其是编程技能的学习,就是对照着教材,边学边练,即 「Learning by doing」。这是我多年以来领悟到的最好经验。

对于 c/C++ 这类编译语言,需要在编写完源文件(source file)后,使用编译器进行编译,生成相应的可执行文件(executable file)。因此,一个既能提供高效文本编辑环境、同时又能提供快速编译功能的「软件」,对于实现项目开发是极为关键的。

Sublime编辑神器

基于使用习惯,我一般都是在 Sublime 进行文本的编辑,然后通过使用支持相关语言处理的配套插件,进行程序开发。这么多年来,Sublime 已经发展成了我得心应手的编辑器与开发环境。我之前有介绍过如何配置,今天这篇文章则介绍如何配置 C/C++ 开发环境。

新建配置文件

在 “Tools -> Build System”,点击 “New Build System”,会自动弹出一个文件,我们在这里写入相应的配置方案:

{
    "cmd": ["g++ -ggdb3 -std=c++11 -Wall ${file} -o ${file_base_name}"],
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
    "working_dir": "${file_path}",
    "selector": "source.c, source.c++",
    "shell": true,
    "variants":
    [
        {
            "name": "Run",
            "cmd": ["${file_path}/${file_base_name}"]
        },
        // ,
        // {
        //     "name": "RunInShell",
        //     "cmd": ["gnome-terminal -x bash -c '${file_path}/${file_base_name};read' "]
        // }
        {
         "name": "Build_Project",
         "cmd": ["g++ -ggdb3 -std=c++11 -Wall ${file_path}/*.cpp -o ${file_base_name}"]
        }
    ]
}

命令后保存到默认的文件夹1。在这里:

  • cmd 命令里设置 gcc/g++ 需要指定的参数,如 -ggdb3-std=c++11-Wall 等,可以方便的我们需要的配置集合到一个命令里
  • 指定运行 shell
  • 同时,我们还指定其他的可选 variants,即这里使用到的 Run 模式,可以在源文件编译结束后,执行程序,并把结果直接输出到 Sublimeconsole 界面。
  • 当然,如何需要调试带有输入(cin)的程序,我们也可以再添加 RunInShell 模式。

同样,我们也可以相应的配置 c11 运行环境

{
    "cmd": ["gcc -ggdb3 -std=c11 -Wall ${file} -o ${file_base_name}"],
    // 如果是工程项目
    // "cmd": ["gcc -ggdb3 -std=c11 -Wall ${file_path}/*.c -o ${file_base_name}"],
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
    "working_dir": "${file_path}",
    "selector": "source.c",
    "shell": true,
    "variants":
    [
        {
            "name": "Run",
            "cmd": ["${file_path}/${file_base_name}"]
        },
        // ,
        // {
        //     "name": "RunInShell",
        //     "cmd": ["gnome-terminal -x bash -c '${file_path}/${file_base_name};read' "]
        // },
        {
         "name": "Build_Project",
         "cmd": ["gcc -ggdb3 -std=c11 -Wall ${file_path}/*.c -o ${file_base_name}"]
        }
    ]
}

调试

我们可以在编辑一个 C/C++ 文件后,直接调用 Ctrl+B 来编译文件,使用 Ctrl+Shift+B 选择指定的运行方式。

build system

build system

设置快捷键

Sublime 里,我们可以十分方便的根据个人偏好,设置我们常用的一些快捷键。比如,运行一个已经编译好的 C/C++ 可执行文件,我们就可以使用 F1 实现直接运行该文件。

{"keys": ["f1"], "command": "build", "args": {"variant": "Run"}}

其中,参数 Run 就是我们在 Build System 里面设置的 ‘variant’。

终结一下,我现在处理 C/C++ 项目的基本流程:

  • 编辑一个源文件.cpp
  • 使用 Ctrl+B 编译该文件
  • 使用 F1 运行文件,直接把相应的结果显示出来。

  1. 一般在~/.config/sublime-text-3/Packages/User