当前位置: 首页 > news >正文

CMake构建学习笔记22-libxml2库的构建

在上一篇文章《CMake构建学习笔记21-通用的CMake构建脚本》中,笔者封装了一个通用的cmake构建脚本cmake-build.ps1,那么这里笔者就尝试通过这个脚本来构建libxml2库。

libxml2是GNOME项目下的XML库,虽然比不上TinyXML-2轻量,但是胜在功能全面。这里就直接列出构建libxml2的脚本:

param(    [string]$Name = "libxml2-v2.14.4",[string]$SourceDir = "../Source",[string]$Generator,[string]$InstallDir,  [string]$SymbolDir 
)# 根据 $Name 动态构建路径
$zipFilePath = Join-Path -Path $SourceDir -ChildPath "$Name.zip"
$SourcePath = Join-Path -Path $SourceDir -ChildPath $Name
$BuildDir = Join-Path -Path "." -ChildPath $Name# 解压ZIP文件到指定目录
if (!(Test-Path $SourcePath)) {Expand-Archive -LiteralPath $zipFilePath -DestinationPath $SourceDir -Force
}# 检查目标文件是否存在,以判断是否安装
$DstFilePath = "$InstallDir/bin/libxml2.dll"
if (Test-Path $DstFilePath) {Write-Output "The current library has been installed."exit 1
} # 复制符号库
$PdbFiles = @("$BuildDir/RelWithDebInfo/libxml2.pdb"
) # 额外构建参数
$CMakeCacheVariables = @{BUILD_SHARED_LIBS = "ON"LIBXML2_WITH_ZLIB = "ON"LIBXML2_WITH_ICONV = "ON"LIBXML2_WITH_HTTP = "ON"
}# 调用通用构建脚本
. ./cmake-build.ps1 -SourceLocalPath $SourcePath `-BuildDir $BuildDir `-Generator $Generator `-InstallDir $InstallDir `-SymbolDir $SymbolDir `-PdbFiles $PdbFiles `-CMakeCacheVariables $CMakeCacheVariables `-MultiConfig $true 

这段脚本实现了解压源代码文件,判断是否已安装、复制符号库、额外构建参数。最后再执行cmake-build.ps1脚本。有的步骤如何不需要可以省略,不过额外构建参数还是需要关心一下,比如LIBXML2_WITH_ZLIB表示使用依赖库zlib参与构建(参看《CMake构建学习笔记2-zlib库的构建》);LIBXML2_WITH_ICONV,表示使用依赖库iconv参与构建(参看《CMake构建学习笔记20-iconv库的构建》)。

在PowerShell中使用如下指令进行构建:

./libxml2.ps1 -Generator "Visual Studio 16 2019" `
-InstallDir "$env:eGova3rdParty" `
-SymbolDir "$env:eGova3rdParty/symbols" `

构建代码项目

http://www.sczhlp.com/news/50357/

相关文章:

  • CF81B Sequence Formatting - 题解
  • CF394A Counting Sticks - 题解
  • 10.3.2 Off-policy 策略梯度定理
  • 网站建设细化流程怎么注册wordpress账号
  • 校园网站建设多少钱海洋牧场网站建设
  • 山东网站建设排行榜可以做数据图的的网站
  • 小程序网站开发怎么样甘孜建设机械网站首页
  • 网站 解析网页设计结课报告
  • 做微信的网站秀客中色十二冶金建设集团有限公司网站
  • 怎么上传文章网站wordpress重建缩略图
  • 做网站月薪设计网站公司都选亿企邦
  • 泰州城乡建设网站怎么搞软件开发
  • 网站策划书包括哪些内容?做钓鱼网站的公司
  • 小马厂网站建设搜索引擎提交入口大全
  • CF1285B Just Eat It! - 题解
  • CF1702G1 Passable Paths (easy version) - 翻译
  • CF1702G2 Passable Paths (hard version) - 翻译
  • 阳朔网站建设公司视频app开发
  • 个人网站备案wordpress的xmlrpc协议
  • wordpress用户手册国外seo比较好的博客网站
  • 高大上的平面设计网站电子商务网站建设花费
  • 3深圳网站建设如何弄微信小程序
  • 云南网站优化排名wordpress 文章id排序
  • 怎么给网站做seo优化北京网络推广公司排行
  • 长沙口碑好的做网站公司哪家好下载的网站模板如何安装
  • UVA11713 Abstract Names 题解
  • CF285C Building Permutation - 题解
  • 交通网站建设entware ng wordpress
  • 广州网站快速排名优化wordpress 主题 餐饮
  • 网站建设咨询电话怎样做一个app