由于VS不支持C/C++单文件编译,只是学习或测试用的单个C/C++文件也要建个项目,实在是麻烦,所以一般都是选择系统开始菜单VS自带的开发人员命令提示符,手动输入编译命令,这样就可以单文件编译了,但是也还是麻烦。
每次需要先打开开发人员命令提示符,然后根据不同的文件路径名输入不同的编译命令,忍了一段时间后,今天终于发现一个比较省心的办法了。
先了解一下VS的命令行编译选项:
VS 2019的开发人员命令提示符(使用32位x86本机工具来生成32位x86本机代码的环境) 目标:%comspec% /k "C:Program Files (x86)Microsoft Visual Studio2019CommunityCommon7ToolsVsDevCmd.bat" 起始位置:"C:Program Files (x86)Microsoft Visual Studio2019Community" 备注: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 Studio2019CommunityVCAuxiliaryBuildvcvars32.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 Studio2019CommunityVCAuxiliaryBuildvcvars64.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 Studio2019CommunityVCAuxiliaryBuildvcvarsx86_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 Studio2019CommunityVCAuxiliaryBuildvcvarsamd64_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 Studio2019CommunityVCAuxiliaryBuildvcvars64.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 Studio2019CommunityVCAuxiliaryBuildvcvars64.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