通过批处理脚本命令行编译VS工程

  1. 前言
  2. 一、命令行编译通用模板
  3. 二、Devenv.exe的用法
  4. 三、参考
  5. 四、更多说明(type命令和more命令查看文件内容)
  6. THE END!

前言

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 打印编译信息
@rem notepad build.log
type build.log

copy %~dp0bin\xvidcore.dll  %~dp0..\lib\
copy %~dp0bin\xvidcore.lib  %~dp0..\lib\


:end
@rem pause
@endlocal
复制代码
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67

这里主要涉及到了devenv.exe命令的使用以及windows编译环境的设置(详见Windows平台命令行中使用vcvarsall.bat配置编译环境)。

二、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 ] ]
复制代码
  • 1

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 转换向导”上的帮助。
复制代码
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53

三、参考

http://blog.csdn.net/listener51/article/details/76039146

四、更多说明(type命令和more命令查看文件内容)

@rem 打印编译信息
@rem notepad build.log
type build.log
复制代码
  • 1
  • 2
  • 3

在没有安装notepad软件的计算机中运行该脚本时,就会出现报错;因此我们可以直接将编译信息打印到cmd窗口中:

利用Windows cmd自带的type命令或者more命令可以查看文件内容。

linux下,可能会用到cat或都是more命令,windows下可以使用type或more命令。

type:查看文件内容;
more:分段查看文件内容,more +100 abc.txt,从第100行开始查看abc.txt文件内容
复制代码
  • 1
  • 2

参考:https://blog.csdn.net/shilian_h/article/details/7108599

THE END!


本博文只能阅读,谢绝转载,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 2963033731@qq.com

文章标题:通过批处理脚本命令行编译VS工程

字数:1.4k

本文作者:Soaring Lee

发布时间:2017-09-25, 15:13:47

最后更新:2021-06-14, 12:13:44

原始链接:https://soaringleefighting.github.io/2017/09/25/【PE系列】通过批处理脚本命令行编译VS工程/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

未找到相关的 Issues 进行评论

请联系 @soaringleefighting 初始化创建

×

喜欢就点赞,疼爱就打赏

相册