<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      CMake構建學習筆記21-通用的CMake構建腳本

      在之前使用CMake構建程序的腳本(CMake構建學習筆記-目錄)中,大部分內容都有比較強的相似性,那么是不是可以這些相似的內容提取出來作為一個單獨的腳本,在構建具體的程序的時候再去調用這個腳本呢?這樣做的好處是如果構建的配置有什么變動,就不用每個程序的構建腳本都修改了,只用修改這個通用的腳本就可以了。

      具體的腳本cmake-build.ps1如下,適用于PowerShell終端:

      param(
          [string]$SourceLocalPath,
          [string]$BuildDir,
          [string]$Generator,
          [string]$InstallDir,
          [string]$SymbolDir,
          [string[]]$PdbFiles,
          [hashtable]$CMakeCacheVariables,
          [bool]$MultiConfig = $false  # 控制是否使用多配置類型
      )
      
      # 清除舊的構建目錄
      if (Test-Path $BuildDir) {
          Remove-Item -Path $BuildDir -Recurse -Force
      }
      New-Item -ItemType Directory -Path $BuildDir
      
      # 構建CMake命令行參數
      $CMakeArgs = @(
          "-B", "`"$BuildDir`"",
          "-G", "`"$Generator`"",
          "-A", "x64"
      )
      
      if ($MultiConfig) {
          $CMakeArgs += "-DCMAKE_CONFIGURATION_TYPES=RelWithDebInfo"
      }
      else {
          $CMakeArgs += "-DCMAKE_BUILD_TYPE=RelWithDebInfo"
      }
      
      $CMakeArgs += (
          "-DCMAKE_PREFIX_PATH=`"$InstallDir`"",
          "-DCMAKE_INSTALL_PREFIX=`"$InstallDir`""
      )
      
      # 添加額外的CMake緩存變量
      foreach ($key in $CMakeCacheVariables.Keys) {
          $CMakeArgs += "-D$key=$($CMakeCacheVariables[$key])"
      }
      
      # 配置CMake
      cmake $SourceLocalPath $CMakeArgs
      
      # 構建階段,指定構建類型
      cmake --build $BuildDir --config RelWithDebInfo --parallel
      
      # 安裝階段,指定構建類型和安裝目標
      cmake --build $BuildDir --config RelWithDebInfo --target install
      
      # 復制符號庫
      foreach ($file in $PdbFiles) {  
          Write-Output $file
          if (Test-Path $file) {
              Copy-Item -Path $file -Destination $SymbolDir
          }
          else {
              Write-Output "Warning: PDB file not found: $file"
          }
      }
      
      # 清理構建目錄
      #Remove-Item -Path $BuildDir -Recurse -Force
      

      這段腳本的關鍵在于以下幾點:

      1. CMake配置參數$CMakeArgs。首先是通用配置,-B表示生成的目錄;-G表示生成器,比如"Ninja"或者"Visual Studio 17 2022";-A表示目標平臺的架構。然后是構建目標的類型,有的庫使用CMAKE_CONFIGURATION_TYPES,有的庫使用CMAKE_BUILD_TYPE,值設置成RelWithDebInfo表示Release版本,但是帶調試信息。接下來是設置依賴庫查找路徑CMAKE_PREFIX_PATH和安裝路徑CMAKE_INSTALL_PREFIX。最后是添加額外的CMake緩存變量,這些緩存變量通常與要構建的庫有關。
      2. 使用生成的配置參數$CMakeArgs進行項目配置:cmake $SourceLocalPath $CMakeArgs。這一步會把設置的參數固定成具體的項目參數,如果使用Visual Studio進行構建,就是生成sln項目。
      3. 編譯、鏈接,生成構建目標:cmake --build $BuildDir --config RelWithDebInfo --parallel。這里的--parallel的意思是并行構建,會采用多線程的方式構建項目,自動決定線程數。
      4. 安裝構建目標cmake --build $BuildDir --config RelWithDebInfo --target install
      5. 最后一步復制符號庫的作用是將生成的符號庫文件復制到特定的目錄中進行管理,這樣在程序崩潰之后,可以通過符號庫找到相應的代碼,便于進行錯誤排查。

      那么有沒有具體使用這個cmake-build.ps1腳本的例子呢?后續文章中的程序構建會使用這個腳本,敬請期待。

      posted @ 2025-08-27 20:56  charlee44  閱讀(203)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产亚洲欧洲av综合一区二区三区| 国产高清小视频一区二区| 中文字幕无码专区一VA亚洲V专| 国产高清在线a视频大全| 尤物国产精品福利在线网| 成全高清在线播放电视剧| 亚洲国产色播AV在线| 午夜精品福利亚洲国产| 久久婷婷五月综合色和啪| 中文人妻AV高清一区二区| 少妇人妻偷人精品视蜜桃| 亚洲欧洲日韩国内高清| 国产精品美女一区二区三| 免费国产一区二区不卡| 国产亚洲精品久久久久婷婷瑜伽| 伊人久久大香线蕉av色婷婷色| 国产综合一区二区三区麻豆| 97午夜理论电影影院| 特黄 做受又硬又粗又大视频| 国产嫩草精品网亚洲av| 亚洲国产精品日韩在线| 91老肥熟女九色老女人| 亚洲精品在线二区三区| 亚洲国产午夜理论片不卡| 男女爽爽无遮挡午夜视频| 亚洲国产欧美在线观看| 激情啪啪啪一区二区三区| 欧美孕妇乳喷奶水在线观看| 南投县| 精品熟女少妇免费久久| 午夜大片免费男女爽爽影院| 日韩V欧美V中文在线| 亚洲AV无码一二区三区在线播放| 国产睡熟迷奷系列网站| 日韩精品中文字幕人妻| 久久夜色精品国产亚洲a| 芒康县| 国产精品自在线拍国产手机版| 国产女人喷潮视频免费| 色综合色综合综合综合综合| 国产精品乱子乱xxxx|