我已经为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 ++构建系统正在运行而不是我的。如何改变这种行为?
答案 0 :(得分:3)
根据文件:
示例:
{
"cmd": ["python", "-u", "$file"],
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python"
}
<强>选择强>
所以"selector": "source.cpp",
是负责选择构建系统的部分。在其他地方我们读到:
在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++
应运行您的构建器。