gpt4 book ai didi

c++ - 如何在 sublime-build 文件中指定 $HOME 文件夹?

转载 作者:行者123 更新时间:2023-11-30 02:22:22 30 4
gpt4 key购买 nike

我在 Sublime Text 3 中为 C++ 项目使用自定义构建系统。其中一行看起来像

"-I${HOME}/my_file/include"

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

最佳答案

您在这里遇到的问题是 cmdshell_cmdworking_dir 参数是 all subject to variable expansion在构建系统中。

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

因此,Sublime 会看到您的 ${HOME} 并尝试扩展它,这无助于从字符串中删除它的值。

解决此问题的最简单且侵入性最小的方法是在变量扩展中引用 $ 字符,这样 Sublime 将忽略它并通过它,shell 可以在适当的地方扩展它:

{
"shell_cmd": "echo Home is \\${HOME}"
}

{
"cmd": "echo Home is \\${HOME}",
"shell": true
}

请注意,如这些示例所示,您需要使用带有完整命令字符串的 shell_cmd 或带有命令字符串的 cmdshell 被设置为 true 以使其工作。

另请注意,由于构建文件是 JSON,因此引号似乎加倍了。因此,当加载构建时,\\${HOME} 在 Sublime 内部被视为 \${HOME}(即它“吃掉”了第一级引用) , 并且最后的引号导致 Sublime 将 $ 视为文字而不是特殊的,因此它将被传递给 shell,shell 会自行扩展它。

关于c++ - 如何在 sublime-build 文件中指定 $HOME 文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47268573/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com