从bash脚本调用vcvars

时间:2013-03-02 08:32:44

标签: visual-studio bash batch-file

我需要在构建不同版本的应用程序的同一个bash脚本(msys)中调用vcvars32.bat和vcvars64.bat。

问题是,即使我能够使用cmd.exe命令调用批处理文件,一旦它返回Visual Studio变量显然没有设置。

我不能从调用bash脚本的外部批处理文件(如msys.bat)调用vcvars,因为我需要在同一个脚本中按顺序调用它们。

那么,有没有办法调用vcvars以便在运行时正确设置bash脚本中的变量?

2 个答案:

答案 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.batvcvars64.bat之间切换,但是希望它对您尝试做的事情有所帮助。