1. 程式人生 > 實用技巧 >VS2019/VC++單檔案編譯配置

VS2019/VC++單檔案編譯配置

由於VS不支援C/C++單檔案編譯,只是學習或測試用的單個C/C++檔案也要建個專案,實在是麻煩,所以一般都是選擇系統開始選單VS自帶的開發人員命令提示符,手動輸入編譯命令,這樣就可以單檔案編譯了,但是也還是麻煩。

每次需要先開啟開發人員命令提示符,然後根據不同的檔案路徑名輸入不同的編譯命令,忍了一段時間後,今天終於發現一個比較省心的辦法了。

先了解一下VS的命令列編譯選項:

VS 2019的開發人員命令提示符(使用32位x86本機工具來生成32位x86本機程式碼的環境)
目標:%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\VsDevCmd.bat"
起始位置:"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\"
備註:Open Visual Studio 2019 Tools Command Prompt

x86 Native Tools Command Prompt for VS 2019(使用32位x86本機工具來生成32位x86本機程式碼的環境)
目標:%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars32.bat"
備註:Open Visual Studio 2019 Tools Command Prompt for targeting x86

x64 Native Tools Command Prompt for VS 2019(使用64位x64本機工具來生成64位x64本機程式碼的環境)
目標:%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"
備註:Open Visual Studio 2019 Tools Command Prompt for targeting x64

x86_x64 Cross Tools Command Prompt for VS 2019(使用32位x86本機工具來生成64位x64本機程式碼的環境)
目標:%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsx86_amd64.bat"
備註:Open Visual Studio 2019 Tools Command Prompt for targeting x64 with x86-hosted tools

x64_x86 Cross Tools Command Prompt for VS 2019(使用64位x64本機工具來生成32位x86本機程式碼的環境)
目標:%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsamd64_x86.bat"
備註:Open Visual Studio 2019 Tools Command Prompt for targeting x86 with x64-hosted tools
===========================================================================================================================
Command File命令檔案	Host and Target architectures主機和目標體系結構
------------------------------------------------------------------------
vcvars32.bat	使用32位x86本機工具來生成32位x86程式碼。 
vcvars64.bat	使用64位x64本機工具來生成64位x64程式碼。 
vcvarsx86_amd64.bat	使用32位x86本機跨工具生成64位x64程式碼。 
vcvarsamd64_x86.bat	使用64位x64本機跨工具生成32位x86程式碼。 
vcvarsx86_arm.bat	使用32位x86本機跨工具生成ARM程式碼。 
vcvarsamd64_arm.bat	使用64位x64本機跨工具生成ARM程式碼。 
vcvarsall.bat	使用引數來指定主機和目標體系結構,以及SDK和平臺選擇。

VS附帶的批處理檔案實在是夠複雜的,200行以上,真看不懂也不想看。我們只要使用就行了。VS的開發環境其實是通過執行一個批處理檔案實現的,那麼只要在我們的環境裡先執行一下就好了。

下面是我配置的執行環境,也是一個批處理:

@echo off
rem 使用vc++編譯

if "%~1" =="" goto :CMD
set fn="%~dpn1"
set hz="%~x1"
if %hz%==".c" (goto C) else if %hz%==".cpp" (goto CPP) else (goto :EOF)

:C
REM 如果檔案是*.c,cl編譯再執行(/TC將所有檔案編譯為.c)
echo %1
%comspec% /c ""C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" && cl %1 -TC -Fe:%fn%.exe && %fn%.exe"
rem 必須在每個路徑周圍新增雙引號,並將整個命令括在雙引號中 del /q %fn%.obj
pause  &&  exit
goto :EOF

:CPP
REM 如果檔案是*.cpp,cl編譯再執行(/TP將所有檔案編譯為.cpp)
echo %1
%comspec% /c ""C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" && cl %1 -TP -EHsc -Fe:%fn%.exe && %fn%.exe"
del /q %fn%.obj pause && exit goto :EOF :CMD cmd

名字隨便起一個比如Build,字尾為bat。使用的方法為:直接拖動你要編譯的C/C++原始檔到這個批處理檔案上,就可以實現VC++編譯並運行了。

這樣還是有一點小麻煩,如果你使用的是編輯器,比如我用的是EditPlus,可以這樣配置:

設定完畢後,任何時候使用這個編輯器開啟一個C/C++原始檔,點選上面設定好的按鈕就可以實現編譯並運行了。

如果你使用的是GCC,只要將上面批處理的編譯命令換一下就可以,如:

:C
REM 如果檔案是*.c,gcc編譯再執行
echo %1
gcc %1 -o %fn%.exe  &&  %fn%.exe  &&  pause  &&  exit
goto :EOF

:CPP
REM 如果檔案是*.cpp,g++編譯再執行
echo %1
g++ %1 -o %fn%.exe  &&  %fn%.exe  &&  pause  &&  exit
goto :EOF