學習如何將 wkbre 軟體跨平台源碼建構至 Windows(MinGW) 平台
除另外標註之內容外本作品的內容以《Creative Commons 姓名標示-相同方式分享》授權條款第 4.0 國際版或其任意更近期版本釋出供大眾於授權範圍內自由使用
以下說明應該能重現本筆記之結果的環境細節:
Ubuntu 23.10 AMD64
3.27.4-1(來源:Ubuntu 23.10 軟體庫)
12.3.0-9ubuntu1+25.3(來源:Ubuntu 23.10 軟體庫)
以下說明重現本筆記成果的操作過程:
本筆記撰寫當下使用的是 KDE 桌面環境得 Konsole 應用軟體
執行下列命令以切換作業目錄至要存放 wkbre 軟體源碼的目錄:
執行下列命令將 wkbre 軟體的 Git 版控庫拓製到本地:
您可以使用 --depth
git clone
命令選項來限縮獲取的變更歷史深度
執行下列命令以切換作業目錄至 wkbre 軟體的來源程式碼目錄:
因 bzip2 子目錄的 CMakeLists.txt 檔案於區分大小寫的作業系統(如 Linux)下會無法被 CMake 讀到故需要執行下列命令手動修正檔案名稱:
附註:
{TXT,txt}
為 Bash 的曲括號展開語法因源碼引用的 C/C++ 程式語言標頭檔案於區分大小寫以及使用正斜線(/)作為檔案路徑目錄分隔符的作業系統(如 Linux)下會無法被 C/C++ 預處理器讀到故需要執行下列命令手動修正檔案路徑:
附註: 此修正已提交為 Fix Linux MinGW cross-build incompatibilities by brlin-tw · Pull Request #1 · AdrienTD/wkbre 上游專案合併請求的一部分
因 Resource Compiler 輸入檔參照的外部檔案路徑於使用正斜線(/)作為檔案路徑目錄分隔符的作業系統(如 Linux)下會無法被 windres
程序讀到故需要執行下列命令手動修正檔案路徑:
附註: 此修正已提交為 Fix Linux MinGW cross-build incompatibilities by brlin-tw · Pull Request #1 · AdrienTD/wkbre 上游專案合併請求的一部分
於當前作業目錄創建一 fix-imvec4-rvalue-type.patch 程式修正檔,新增下列內容後保存:
執行下列命令以套用程式修正:
附註: 本修正與 draft: Fix "cannot bind non-const lvalue reference of type ‘ImVec4&’ to an rvalue of type ‘ImVec4’" compilation error by brlin-tw · Pull Request #2 · AdrienTD/wkbre 上游專案合併請求效果等價
為避免源碼建構用檔案與軟體源碼檔案混在一起,執行下列命令以創建軟體建構用檔案存放目錄:
執行下列命令以切換作業目錄至軟體建構用檔案存放目錄:
以 root 身份執行下列命令以安裝 CMake 軟體建構系統檔案生成器:
以 root 身份執行下列命令以安裝 MinGW-w64 跨平台軟體建構工具鏈:
於當前作業目錄創建一 TC-mingw.cmake 檔案,新增下列內容後保存:
執行下列命令以產生 GNU Make 軟體建構系統的建構規則檔:
您可以透過 -G
cmake
命令選項以指定其他軟體建構系統(如 Ninja)的源碼建構用檔案
執行下列命令以開始進行軟體建構:
順利的話您應可以於命令輸出中看到軟體主程式被成功建構:
且可於當前作業目錄中看到被建構的軟體主程式檔案:
執行下列命令引入執行時期所需要的 Windows 程式庫:
注意: 如果您要將軟體複製到其他系統使用請改用 cp
命令複製完整的程式庫檔案
以 root 身份執行下列命令以安裝 Wine Windows API 相容層:
執行下列命令即可嘗試執行建構好的軟體:
以下說明進行本筆記之操作時可能會用到的常用操作:
切換作業目錄至 Git 版控庫的作業副本目錄中
執行下列命令以移除 Git 版控庫所有未被版本控制系統追蹤的檔案:
執行下列命令以切換作業目錄至 Git 版控庫的作業副本目錄中:
執行下列命令以重設作業副本目錄中尚未提交進版控庫的內容變更:
執行下列命令以切換作業目錄至 wkbre 軟體的軟體建構用檔案存放目錄中:
執行下列命令以清理 GNU Make 軟體建構系統的源碼建構中間產物:
執行下列命令以切換作業目錄至 Git 版控庫的作業副本目錄中:
執行下列命令以查看當前 Git 版本庫 HEAD 指標指向的修訂版與作業副本之間的內容差異:
以下列舉撰寫本文章期間所參考的第三方資料:
git clean
命令的用途與相關命令選項cmake
命令的用途與相關命令選項find
命令的用途與相關命令選項xargs
命令的用途與相關命令選項windres
命令的用途與相關命令選項ImVec4
資料類型變數傳入邏輯編譯報錯除另外標註之內容外本作品的內容以《Creative Commons 姓名標示-相同方式分享》授權條款第 4.0 國際版或其任意更近期版本釋出供大眾於授權範圍內自由使用