如何使用 git bash 中的命令行 Visual Studio 编译器?

Posted

技术标签:

【中文标题】如何使用 git bash 中的命令行 Visual Studio 编译器?【英文标题】:How can I use the command-line Visual Studio compiler from git bash? 【发布时间】: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 感谢这个技巧,我最终基本上做到了,但主要是手动修复它。 【参考方案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"
    

【讨论】:

以上是关于如何使用 git bash 中的命令行 Visual Studio 编译器?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Windows 命令行启动 Git Bash?

如何配置 git bash 命令行补全?

git-bash 中的 curl 命令

如何从 Git Bash 中将命令行参数传递给 Windows 应用程序?

Git Bash命令行上传git项目

git bash怎么执行node命令