我需要在构建不同版本的应用程序的同一个bash脚本(msys)中调用vcvars32.bat和vcvars64.bat。
问题是,即使我能够使用cmd.exe命令调用批处理文件,一旦它返回Visual Studio变量显然没有设置。
我不能从调用bash脚本的外部批处理文件(如msys.bat)调用vcvars,因为我需要在同一个脚本中按顺序调用它们。
那么,有没有办法调用vcvars以便在运行时正确设置bash脚本中的变量?
答案 0 :(得分:0)
您需要做的是在批处理脚本中使用命令:“call”。所以它可能看起来像:
call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat"
echo DevEnvDir set to: %DevEnvDir%
如果您不使用“call”,则在vcvars32.bat退出后脚本将退出,并且不会运行任何其他命令。
答案 1 :(得分:0)
解决此问题的一种方法是在vcvars环境中运行命令,而不是尝试将其导出回bash端。这就是我们为项目选择的方法。
主要问题是vcvars*.bat
不接受在环境中执行的命令,因此使用cmd需要一些技巧。因此,我想到了一个名为vcvars_env_run.sh
的简单Bash脚本,该脚本接受任意参数并将其转发到已调用vcvars64.bat
的cmd.exe。大部分工作是弄清楚如何正确转发带引号的参数,以及&&,||,返回代码等。
我在https://github.com/kromain/wsl-utils
上传了脚本和一些示例您可能需要稍微调整一下才能在vcvars32.bat
和vcvars64.bat
之间切换,但是希望它对您尝试做的事情有所帮助。