由於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