找回密码
 立即注册
首页 业界区 业界 CMake构建学习笔记22-libxml2库的构建

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

饮邺谲 昨天 18:48
在上一篇文章《CMake构建学习笔记21-通用的CMake构建脚本》中,笔者封装了一个通用的cmake构建脚本cmake-build.ps1,那么这里笔者就尝试通过这个脚本来构建libxml2库。
libxml2是GNOME项目下的XML库,虽然比不上TinyXML-2轻量,但是胜在功能全面。这里就直接列出构建libxml2的脚本:
  1. param(   
  2.     [string]$Name = "libxml2-v2.14.4",
  3.     [string]$SourceDir = "../Source",
  4.     [string]$Generator,
  5.     [string]$InstallDir,  
  6.     [string]$SymbolDir
  7. )
  8. # 根据 $Name 动态构建路径
  9. $zipFilePath = Join-Path -Path $SourceDir -ChildPath "$Name.zip"
  10. $SourcePath = Join-Path -Path $SourceDir -ChildPath $Name
  11. $BuildDir = Join-Path -Path "." -ChildPath $Name
  12. # 解压ZIP文件到指定目录
  13. if (!(Test-Path $SourcePath)) {
  14.     Expand-Archive -LiteralPath $zipFilePath -DestinationPath $SourceDir -Force
  15. }
  16. # 检查目标文件是否存在,以判断是否安装
  17. $DstFilePath = "$InstallDir/bin/libxml2.dll"
  18. if (Test-Path $DstFilePath) {
  19.     Write-Output "The current library has been installed."
  20.     exit 1
  21. }
  22. # 复制符号库
  23. $PdbFiles = @(
  24.     "$BuildDir/RelWithDebInfo/libxml2.pdb"
  25. )
  26. # 额外构建参数
  27. $CMakeCacheVariables = @{
  28.     BUILD_SHARED_LIBS = "ON"
  29.     LIBXML2_WITH_ZLIB = "ON"
  30.     LIBXML2_WITH_ICONV = "ON"
  31.     LIBXML2_WITH_HTTP = "ON"
  32. }
  33. # 调用通用构建脚本
  34. . ./cmake-build.ps1 -SourceLocalPath $SourcePath `
  35.     -BuildDir $BuildDir `
  36.     -Generator $Generator `
  37.     -InstallDir $InstallDir `
  38.     -SymbolDir $SymbolDir `
  39.     -PdbFiles $PdbFiles `
  40.     -CMakeCacheVariables $CMakeCacheVariables `
  41.     -MultiConfig $true
复制代码
这段脚本实现了解压源代码文件,判断是否已安装、复制符号库、额外构建参数。最后再执行cmake-build.ps1脚本。有的步骤如何不需要可以省略,不过额外构建参数还是需要关心一下,比如LIBXML2_WITH_ZLIB表示使用依赖库zlib参与构建(参看《CMake构建学习笔记2-zlib库的构建》);LIBXML2_WITH_ICONV,表示使用依赖库iconv参与构建(参看《CMake构建学习笔记20-iconv库的构建》)。
在PowerShell中使用如下指令进行构建:
  1. ./libxml2.ps1 -Generator "Visual Studio 16 2019" `
  2. -InstallDir "$env:eGova3rdParty" `
  3. -SymbolDir "$env:eGova3rdParty/symbols" `
复制代码
构建代码项目

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册