###Date: 2017/9/25
Visual Studio IDE本身具有编译链接以及调试分析的功能,是一款非常强大的代码调试和阅读的软件。但通常windows平台下的库的生成采用批处理脚本的方式来编译VS工程会更加的方便,而且不需要打开VS软件。
下面以Mpeg4的开源实现Xvid的工程libxvidcore.sln为例,整理一下通过批处理脚本命令行编译VS工程的通用方法。
一、命令行编译通用模板
@rem 说明:Windows平台命令行编译脚本 @rem 作用:通过批处理脚本命令行编译VS工程 @echo off @rem usage: build.bat Release/Debug Win32/x64 @rem set build_config="Debug|Win32" @rem set build_config="Release|Win32" @rem set build_config=$ALL @rem 当前环境设置只在本文件中有效 @setlocal @rem "命令行输入参数" set build=%1 set platform=%2 set build_config="%build%|%platform%" @echo %date% %time% >build.log @rem 当前脚本所在路径 @echo "编译目录..." @echo %~dp0 set build_root = %~dp0 @rem 各种文件和路径 set VCVARS="%VS120COMNTOOLS%../../VC/vcvarsall.bat" set DEVENV="%VS120COMNTOOLS%../IDE/devenv.exe" @rem 设置解决方案路径 set SOlUTION="%~dp0libxvidcore.sln" @echo "解决方案..." @echo %SOLUTION% @rem 检查文件路径配置 if not exist %VCVARS% echo "VCVARS不存在!" &goto end if not exist %DEVENV% echo "DEVENV不存在!" &goto end if not exist %SOlUTION% echo "SOlUTION不存在!" &goto end @rem 删除输出文件 if exist build.log del build.log @rem 编译环境配置 @echo "环境配置..." if %platform%=="Win32" ( echo "Windows 32位环境配置..." call %VCVARS% x86) if %platform%=="x64" ( echo "Windows 64位环境配置..." call %VCVARS% x86_amd64) @echo build_config:%build_config%,please waiting @echo "开始编译" %DEVENV% %SOlUTION% /rebuild %build_config% /out build.log rem notepad build.log copy %~dp0bin\xvidcore.dll %~dp0..\lib\ copy %~dp0bin\xvidcore.lib %~dp0..\lib\ :end @rem pause @endlocal
这里主要涉及到了devenv.exe命令的使用以及windows编译环境的设置(详见http://blog.csdn.net/soaringlee_fighting/article/details/78043905)。
二、Devenv.exe的用法
devenv[solutionfile | projectfile | anyfile.ext] [switches]
devenv 的第一个参数通常是一个解决方案文件(.sln)或项目文件(.vcproj)。如果您希望在编辑器中自动打开文件,也可以使用任何其他文件作为第一个参数。当您输入项目文件时,IDE会在项目文件的父目录中查找与该项目文件具有相同基名称的 .sln 文件。如果不存在这样的 .sln 文件,IDE 将查找引用该项目的单个 .sln 文件。如果不存在这样的单个.sln 文件,则 IDE 将创建一个具有默认 .sln 文件名且未保存的解决方案,其基名称与项目文件的基名称相同。
命令行编译:
devenv solutionfile.sln /buildsolutionconfig [ /project projectnameorfile [ /projectconfig name ] ]
devenv可用的命令行开关:
/Build |
使用指定的解决方案配置生成解决方案或 项目。例如“Debug”。如果可能存在多个平台, 则配置名称必须用引号括起来 并且包含平台名称。例如“Debug|Win32”。 |
/Clean |
删除生成结果。 |
/Command |
启动 IDE 并执行该命令。 |
/Deploy |
生成并部署指定的生成配置。 |
/Edit |
在此应用程序的运行实例中打开 指定文件。如果没有正在运行的实例, 则启动一个具有简化窗口布局的新实例。 |
/LCID |
设置 IDE 中用于用户界面的默认语言。 |
/Log |
将 IDE 活动记录到指定的文件以用于故障排除。 |
/NoVSIP |
禁用用于 VSIP 测试的 VSIP 开发人员许可证密钥。 |
/Out |
将生成日志追加到指定的文件中。 |
/Project |
指定生成、清理或部署的项目。 必须和 /Build、/Rebuild、/Clean 或 /Deploy 一起使用。 |
/ProjectConfig |
重写解决方案 配置中指定的项目配置。例如“Debug”。如果可能存在 多个平台,则配置名称必须用引号括起来 并包含平台名称。例如“Debug|Win32”。 必须和 /Project 一起使用。 |
/Rebuild |
先清理,然后使用指定配置生成 解决方案或项目。 |
/ResetAddin |
移除与特定外接程序关联的命令和命令用户界面。 |
/ResetSettings |
恢复 IDE 的默认设置,还可以重置为 指定的 VSSettings 文件。 |
/ResetSkipPkgs |
清除所有添加到 VSPackages 的 SkipLoading 标记。 |
/Run |
编译并运行指定的解决方案。 |
/RunExit |
编译并运行指定的解决方案然后关闭 IDE。 |
/SafeMode |
以安全模式启动 IDE,加载最少数量的窗口。 |
/Upgrade |
升级项目或解决方案以及其中的所有项目。 并相应地创建这些文件的备份。有关备份 过程的更多信息,请参见 “Visual Studio 转换向导”上的帮助。 |
参考:
http://blog.csdn.net/listener51/article/details/76039146