Visual studio &引用;资料来源;来自Cygwin的VsDevCmd.bat
因此,Visual studio &引用;资料来源;来自Cygwin的VsDevCmd.bat,visual-studio,batch-file,visual-studio-2015,cygwin,Visual Studio,Batch File,Visual Studio 2015,Cygwin,因此,VsDevCmd.bat是一个为Visual Studio工具设置环境变量的漂亮脚本: 'C:\ProgramFiles(x86)\Microsoft Visual Studio 14.0\Common7\Tools\VsDevCmd.bat' 我正在使用Cygwin的Visual Studio工具cl,link,等等。如何使用该脚本设置所有相同的环境变量,而不在bash中重新创建脚本 我可以从cmd shell运行批处理脚本,然后启动bash,但这并不令人满意——我需要从Cygwin中启
VsDevCmd.bat
是一个为Visual Studio工具设置环境变量的漂亮脚本:
'C:\ProgramFiles(x86)\Microsoft Visual Studio 14.0\Common7\Tools\VsDevCmd.bat'
我正在使用Cygwin的Visual Studio工具cl
,link
,等等。如何使用该脚本设置所有相同的环境变量,而不在bash中重新创建脚本
我可以从cmd shell运行批处理脚本,然后启动bash,但这并不令人满意——我需要从Cygwin中启动批处理文件的“寻源”过程。我发现您所需要的只是路径 从DOS运行VsDevCmd.bat,然后将集合导出到一个文件(
SET>c:\temp\SET.txt
)
从该文件中提取路径并将其转换为Linux格式-C:\ProgramFiles
变为/cygdrive/C/ProgramFiles
,\
全部变为/
。更换代码>与:
然后编辑“${HOME}/.bashrc”文件-将上述内容附加到路径中-不要忘记在原始路径的末尾添加一个:
我的“${HOME}/.bashrc”现在说了以下内容——但复制它的风险自负
导出路径="/c/bin:/usr/local/bin:/usr/bin:/cygdrive/c/Program Files/Microsoft Visual Studio/2017/Professional/VC/Tools/MSVC/14.11.25503/bin/HostX86/x86:/cygdrive/c/Program Files/Microsoft Visual Studio/2017/Professional/Common7/IDE/VC/VCPackages:/cygdrive/c/Program Files/Microsoft SDK/TypeScript/2.3:/cygdrive/c/Program Files/Microsoft VisualStudio/2017/Professional/Common7/IDE/CommonExtensions/Microsoft/TestWindow:/cygdrive/c/Program Files/Microsoft Visual Studio/2017/Professional/Common7/IDE/CommonExtensions/Microsoft/TeamFoundation/Team Explorer:/cygdrive/c/Program Files/Microsoft Visual Studio/2017/Professional/MSBuild/15.0/bin/Roslyn:/cygdrive/c/Program Files/Microsoft Visual StudioStudio/2017/Professional/Team Tools/Performance Tools:/cygdrive/c/Program Files/HTML帮助研讨会:/cygdrive/c/Program Files/Microsoft Visual Studio/2017/Professional//MSBuild/15.0/bin:c:/Windows/Microsoft.NET/Framework/v4.0.30319:/cygdrive/c/Program Files/Microsoft Visual Studio/2017/Professional/Common7/IDE/:/:/cygdrive/c/Program Files/MicrosoftVisual Studio/2017/Professional/Common7/Tools/:/cygdrive/c/Program Files/Microsoft Visual Studio/2017/Professional/VC/Tools/MSVC/14.11.25503/bin/HostX86/x86:/cygdrive/c/Program Files/Microsoft Visual Studio/2017/Professional/Common7/IDE/VC/VCPackages:/cygdrive/c/Program Files/Microsoft SDK/TypeScript/2.3:/cygdrive/c/Program Files/Microsoft VisualStudio/2017/Professional/Common7/IDE/CommonExtensions/Microsoft/TestWindow:/cygdrive/c/Program Files/Microsoft Visual Studio/2017/Professional/Common7/IDE/CommonExtensions/Microsoft/TeamFoundation/Team Explorer:/cygdrive/c/Program Files/Microsoft Visual Studio/2017/Professional/MSBuild/15.0/bin/Roslyn:/cygdrive/c/Program Files/Microsoft Visual StudioStudio/2017/Professional/Team Tools/Performance Tools:/cygdrive/c/Program Files/HTML帮助研讨会:/cygdrive/c/Program Files/Microsoft Visual Studio/2017/Professional//MSBuild/15.0/bin:c:/Windows/Microsoft.NET/Framework/v4.0.30319:/cygdrive/c/Program Files/Microsoft Visual Studio/2017/Professional/Common7/IDE/:/:/cygdrive/c/Program Files/MicrosoftVisual Studio/2017/Professional/Common7/Tools/:/cygdrive/c/Program Files/Windows Kits/8.0/bin/x86:/cygdrive/c/Program Files/Microsoft SDK/F#/3.0/Framework/v4.0/:c:/Windows/Microsoft.NET/Framework/v4.0.30319:/cygdrive/c/Program Files/CMake/bin:$PATH:$HOME/bin“
下面是我的结论。此bash函数将使用vcvvarsall.bat
文件运行cmd
,然后将嵌套bash
以打印环境变量,该变量可以提取:
# Given envar names return their newline-separated values setup for VS2015
#
# VcVarsAll.bat is a script that sets up environment variables for Visual
# Studio command-line builds:
#
# https://msdn.microsoft.com/en-us/library/f2ccy3wt.aspx
#
query_vcvarsall() {
local envars=$*
(cd '/cygdrive/c/Program Files (x86)/Microsoft Visual Studio 14.0/VC' &&
cmd /c "VcVarsAll.bat amd64 && c:/cygwin/bin/bash -c 'printenv $envars'")
}
然后设置,例如,路径
:
export PATH="$(query_vcvarsall PATH)"
顺便问一下,您是否有“从cmd shell运行批处理脚本,然后启动bash”的命令?我无法在开发人员shell中找到启动命令的命令。感谢您提供此命令!对于VS 2019,它的小版本非常有用-以下是MSYS2.bashrc:query_vsdevcmd(){local envars=$*(cd'/c/Program Files(x86)/Microsoft Visual Studio/2019/Community/Common7/Tools'&&cmd/c“VsDevCmd.bat&&c:/msys64/usr/bin/bash-c“printenv$envars”))export PATH=“$(query_VsDevCmd PATH):$PATH“
结果是VsDevCmd.bat在输出中生成版权头,因此必须通过输出redurection调用它以达到nul,例如cmd/c”VsDevCmd.bat>nul&…
。此外,至少还需要添加INCLUDE和LIB env vars,以便可以使用已安装SDK的默认头。