msvc:BAT指令碼判斷是否設定MSVC編譯的環境變數(執行vcvarsall.bat)
阿新 • • 發佈:2019-01-28
關於設定MSVC環境變數的方式參見我之前寫一篇部落格:《msvc交叉編譯:使用vcvarsall.bat設定命令列編譯環境》。
如果你在CMD中反覆執行vcvarsall.bat
會導致環境變數儲存空間溢位而出錯。
所以寫BAT指令碼如果不判斷是否設定了MSVC環境變數,而每次編譯的時候都執行vcvarsall.bat
,在同一個CMD下執行幾次就會出錯了,只能關閉當前的CMD,再重開一個。
這是個小毛病,但有時也蠻煩人的,所以就想有沒有辦法避免這個,能不能在指令碼中判斷MSVC環境變數是否已經設定。
通過閱讀vcvarsall.bat
的原始碼,找到了解決方案:vcvarsall.bat
VisualStudioVersion
來儲存當前MSVC編譯器的版本號。
所以只要判斷這個變數是否定義就可以確定是否已經正確設定MSVC環境變數:
以下程式碼片段就是應用示例:
if exist build rmdir project.vs2015 /s/q
mkdir project.vs2015
cd project.vs2015
rem 通過判斷 VisualStudioVersion 是否定義確定是否有必要執行vcvarsall.bat
rem 避免重複執行vcvarsall.bat造成環境變數儲存空間溢位
if not defined VisualStudioVersion (
call "%VS140COMNTOOLS%..\..\vc/vcvarsall" x86_amd64
)
cmake -G "Visual Studio 14 2015 Win64" -DCMAKE_INSTALL_PREFIX==..\release\fse_windows_x86_64 ..