【问题标题】:How can I use the command-line Visual Studio compiler from git bash?如何使用 git bash 中的命令行 Visual Studio 编译器?
【发布时间】: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 运行命令,那就太好了。我会很高兴:

  1. 以某种方式“sourceing”VsDevCmd.bat 文件以导出它设置为环境中的变量的变量,因此我可以从 bash 运行 cl,或者

  2. //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


【解决方案1】:

我认为没有简单的方法可以做到这一点。我通过使用 cmake 来处理我的项目并只是做

来绕过这个问题
mkdir build
cd build
cmake -G "Visual Studio 16 2019" ..
cmake --build .

也许比我聪明的人可以查看 CMake 的源代码并弄清楚 --build 标志是如何工作的。

【讨论】:

    【解决方案2】:

    对于任何使用新的 Windows 终端在这里徘徊的人,这是我的配置文件,以使用 git bash 和 Visual Studio 编译器:

        {
            "colorScheme": "One Half Dark",
            "commandline": "\"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Professional\\VC\\Auxiliary\\Build\\vcvars64.bat\" && \"C:\\Program Files\\Git\\bin\\bash.exe\" --login",
            "cursorShape": "bar",
            "font": 
            {
                "face": "Lucida Sans Typewriter"
            },
            "guid": "{14ad203f-52cc-4110-90d6-d96e0f41b64d}",
            "icon": "%PROGRAMFILES%/Git/mingw64/share/git/git-for-windows.ico",
            "name": "Git Bash",
            "tabTitle": "Git Bash"
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-02
      • 1970-01-01
      • 2010-10-04
      • 1970-01-01
      • 2010-12-11
      相关资源
      最近更新 更多