【问题标题】:Automatic Build in Sublime Text is not working for C++Sublime Text 中的自动构建不适用于 C++
【发布时间】:2013-12-31 01:51:14
【问题描述】:

我已经为 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++ 构建系统正在工作,而不是我的。如何改变这种行为?

【问题讨论】:

    标签: c++ sublimetext3


    【解决方案1】:

    根据文档:

    示例:

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

    选择器

    • 可选。使用工具 |构建系统 |自动设置为真。 Sublime Text 使用这个范围选择器为活动视图找到合适的构建系统。

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

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

    关于 Textmate 文档:

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

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

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

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

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

    【讨论】:

    • 谢谢!我一直在试图弄清楚如何解决这个问题,而且效果很好。 +1
    猜你喜欢
    • 2015-04-16
    • 2013-08-28
    • 2016-01-05
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 2020-10-07
    • 2017-03-31
    • 1970-01-01
    相关资源
    最近更新 更多