VS2019/VC++单文件编译配置

由于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
原文地址:https://www.cnblogs.com/chengyb/p/14158834.html