我需要从同一个 bash 脚本 (msys) 中调用 vcvars32.bat 和 vcvars64.bat,它构建了我的应用程序的不同版本。
问题是,即使我能够使用 cmd.exe 命令调用批处理文件,一旦它返回,显然没有设置 Visual Studio 变量。
我无法从调用 bash 脚本的外部批处理文件(如 msys.bat)调用 vcvars,因为我需要在同一个脚本中按顺序调用它们。
那么,有什么方法可以调用 vcvars 以便在运行时正确设置 bash 脚本中的变量吗?
最佳答案
解决此问题的一种方法是从 vcvars 环境中运行命令,而不是尝试将其导出回 bash 端。这是我们为项目选择的方法。
主要问题是 vcvars*.bat
不接受在环境中执行的命令,因此需要对 cmd 进行一些技巧。因此,我提出了一个名为 vcvars_env_run.sh
的简单 Bash 脚本,它接受任意参数并将它们转发到调用了 vcvars64.bat
的 cmd.exe。大部分工作是弄清楚如何正确转发引用的参数,以及 &&、||、返回码等。
我已将脚本和一些示例上传到 https://github.com/kromain/wsl-utils
您可能需要稍微调整一下以在 vcvars32.bat
和 vcvars64.bat
之间切换,但希望它对您尝试做的事情有所帮助。
关于visual-studio - 从 bash 脚本调用 vcvars,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15172470/