如何在升华生成文件中指定$HOME文件夹? 我在一个C++项目中使用崇高的文本3中的自定义构建系统。其中一行看起来像 "-I${HOME}/my_file/include"

如何在升华生成文件中指定$HOME文件夹? 我在一个C++项目中使用崇高的文本3中的自定义构建系统。其中一行看起来像 "-I${HOME}/my_file/include",c++,sublimetext3,C++,Sublimetext3,问题是,${HOME}没有扩展到实际的/HOME/user_x,而是扩展到一个空字符串'。我找不到任何方法来优雅地指定主页文件夹,而不需要编写实际路径。有没有办法做到这一点?也就是说,要将UNIX$HOME变量扩展到主文件夹的实际位置?您可以尝试将命令写入shell脚本并从Sublime运行脚本。我不确定Sublime是否支持此功能,但shell脚本应该查找并扩展$HOME和任何其他变量。这里您遇到的问题是,cmd、shell\u cmd和working\u dir参数都在构建系统中 没有概述的

问题是,
${HOME}
没有扩展到实际的
/HOME/user_x
,而是扩展到一个空字符串
'
。我找不到任何方法来优雅地指定
主页
文件夹,而不需要编写实际路径。有没有办法做到这一点?也就是说,要将UNIX
$HOME
变量扩展到主文件夹的实际位置?

您可以尝试将命令写入shell脚本并从Sublime运行脚本。我不确定Sublime是否支持此功能,但shell脚本应该查找并扩展$HOME和任何其他变量。

这里您遇到的问题是,
cmd
shell\u cmd
working\u dir
参数都在构建系统中

没有概述的是,当展开时,这种格式的任何内容都被视为变量,未知变量被展开为空字符串(即无值)

因此,Sublime会看到您的
${HOME}
并尝试对其进行扩展,这将毫无帮助地从字符串中删除它的值

解决此问题的最简单和最不具侵入性的方法是在变量展开中引用
$
字符,这样升华将忽略该字符并将其传递给shell,shell可以根据需要展开该字符:

{
“shell_cmd”:“echo Home是\\${Home}”
}

{
“cmd”:“echo Home是\\${Home}”,
“壳”:真的吗
}
请注意,如这些示例所示,您需要将
shell_cmd
与完整的命令字符串一起使用,或者将
cmd
与命令字符串结合使用,并将
shell
设置为
true
,才能使其工作


还要注意,由于构建文件是JSON,所以引号似乎加倍了。因此,当加载构建时,
\${HOME}
在内部被Sublime视为
\${HOME}
(即它“吃掉”第一级引用),最后的引用使Sublime将
$
视为一个文本,而不是特殊的,以便它将被传递给shell,从而扩展它本身。

事实上,外壳正确地展开它,我想知道升华是否也能做到这一点。这似乎是一个需要支持的普通功能:)根据,您还可以尝试将
shell
设置为
true
。可能有用。