Sublime Text中的自动构建不适用于C ++

时间:2013-12-12 15:10:32

标签: c++ sublimetext3

我已经为C ++文件创建了自定义构建系统。以下是我的构建系统:

{
    "cmd": ["g++", "-Wall", "-time", "$file", "-o", "$file_base_name","&&", "start", "cmd","/c","${file_base_name}","^&","cmd","/c","pause"],
        "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
        "working_dir": "${project_path:${folder}}",
        "selector": "source.cpp",
        "shell": true,    
}

问题是,只有我手动选择这个构建系统才能正常工作。如果我指定自动构建系统,系统的c ++构建系统正在运行而不是我的。如何改变这种行为?

1 个答案:

答案 0 :(得分:3)

根据文件:

示例:

{
    "cmd": ["python", "-u", "$file"],
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python"
}

<强>选择

  • 可选。在工具|时使用构建系统|自动设置为true。 Sublime Text使用此范围选择器为活动视图查找适当的构建系统。

所以"selector": "source.cpp",是负责选择构建系统的部分。在其他地方我们读到:

  • Sublime Text实现了Mac的文本编辑器Texmate的范围构思。 Textmate的在线手册包含有关范围选择器的更多信息,这些信息选择器对Sublime Text用户也很有用。

在Textmate文档中:

  • 与CSS一样,可以在范围选择器中使用元素的上下文。下图显示了字符串作为工具提示的范围(通过^⇧P)。字符串的直接父级是source.php.embedded.html,text.html.basic是祖先。

  • 在范围选择器中,我们将元素名称指定为空格分隔列表,以指示每个元素应该存在于范围中(并且顺序相同)。因此,如果我们想要在PHP中定位所有字符串,我们可以使用source.php字符串,或者我们可以使用text.html source.php来定位HTML中嵌入的PHP。

范围并不意味着文件名而不是扩展名。在C++.sublime-project中你有:

C++.sublime-settings{
    "extensions": ["cpp", "cc", "cxx", "c++", "h", "hpp", "hxx", "h++", "inl", "ipp"]
}

使c++范围内的扩展名的文件生效。如果您当前打开的文件被识别为属于"selector": "source.c++"范围,则将范围定义更改为C++应运行您的构建器。