【发布时间】:2020-09-22 11:52:33
【问题描述】:
与this 问题有关。
我想在 Windows 上从 git bash 运行 cl.exe。通常您需要开发人员提示来执行此操作,所以我这样做:
cmd //V //K "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\VsDevCmd.bat"
这会将开发人员提示作为子 shell 打开。如果我愿意,我可以从那里运行cl。
但是,如果我可以在不进入子 shell 的情况下从 git bash 运行命令,那就太好了。我会很高兴:
以某种方式“
sourceing”VsDevCmd.bat文件以导出它设置为环境中的变量的变量,因此我可以从 bash 运行cl,或者将
//K更改为//C并更改为当前 (bash) 工作目录,然后执行cl并转发任何参数。如果是别名,则加分。
根本想不出#1。
我需要关于 #2 的语法方面的帮助,因为当
cmd //V //C "C:\Program Files (x86)\...\VsDevCmd.bat"
在它执行批处理脚本并立即退出的意义上起作用,我不知道如何将多个命令链接在一起。运行
cmd //V //C "C:\Program Files (x86)\...\VsDevCmd.bat & cl"
例如,给出
'C:\Program' is not recognized as an internal or external command,
operable program or batch file.
如何直接从 git bash 执行cl.exe,而不需要单独的提示?
【问题讨论】:
-
最好的办法是从已经执行 vsdevcmd.bat 的 Windows 控制台启动 bash。
-
另一种选择是运行
set > environment.txt将 VSDev 环境保存到文件中,然后自己编写一个 bash 脚本来处理该文本并将其与您的 bash 环境合并。 -
我认为你需要在看到你需要的东西之后手动设置你的环境。没什么大不了!所有路径和允许的字符都是不同的。你不需要 vsdevcmd.bat .. 这并不神奇.. 你只需要它导出的 一些 (不是全部)变量。我刚刚成功地做到了
export PATH=$PATH:/c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2019/Professional/VC/Tools/MSVC/14.24.28314/bin/Hostx86/x86,我可以访问 cl.exe(特别是)。添加你的 lib 路径和它需要的其他东西应该不会花很长时间。 -
在内部使用两次引号,如
cmd //V //C """C:\Program Files (x86)\...\VsDevCmd.bat" & cl"" -
@jwdonahue 感谢这个技巧,我最终基本上做到了,但主要是手动修复它。
标签: bash batch-file cmd git-bash