xmake:用 xmake.lua 組織跨平台建置與套件
專案速覽:基於 Lua 的跨平台建立實用程式。 Xmake 是一個基於 Lua 腳本語言的跨平台建立實用程式。
秒懂
- 它是什麼?
- A cross-platform build utility based on Lua. Xmake is a cross-platform build utility based on the Lua scripting language. 本文聚焦 從 Lua 專案檔、工具鏈與快取功能檢查 xmake 的適用範圍。
- 適合誰用?
- 適合需要直接研究 xmake 並能處理其環境條件的人;不適合把 README 的示範、統計或自報數據當成正式保證。採用前先針對 xmake.lua、xmake f、xmake run、add_requires、xrepo 執行最小流程,保存版本、設定、輸入與輸出,再決定是否納入工作流;若結果不符,回到 xmake-io/xmake 的 README、issue 與 release 逐項比對。
- 可以商用嗎?
- 可以。Apache-2.0 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
- 還在維護嗎?
- 有在維護。儲存庫最近一次提交在 1 天前。
- 用什麼語言寫的?
- 主要是 Lua(依據 GitHub 的語言統計)。
以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。
開源專案深度解析
xmake:用 xmake.lua 組織跨平台建置與套件 的定位
倉庫名為 xmake-io/xmake,描述為基於 Lua 的跨平台建置工具。README 開頭說 xmake 很輕量,除了標準庫以外沒有依賴,並使用 xmake.lua 檔案維護專案建置。依 README 的說法,xmake 可以直接建置原始碼,可以像 CMake 或 Meson 那樣產生專案檔,還可以透過內建套件系統管理 C/C++ 依賴。README 把這點概括為建置後端加專案產生器加套件管理器加遠端或分散式建置加快取,並把工具與 Make/Ninja、CMake/Meson、Vcpkg/Conan、distcc 和 ccache/sccache 作比較。這個比較是 README 自己的說法,不是獨立評估。
README 說 xmake.lua 語法簡單且可讀。最小範例建立了一個名為 console 的二進位目標,並新增 src 目錄下所有 .c 檔案。另一個範例用 add_requ
在 xmake-io/xmake 的 README 脈絡中,第 1 節要核對的是 xmake.lua、xmake f、xmake run、add_requires、xrepo。先記錄專案版本、作業系統與輸入資料,再執行或閱讀上述入口;觀察命令回傳值、產生的檔案、服務埠或裝置反應。對這個觀察點來說,輸入應保持可重複,輸出則要保留原始檔名、日誌和錯誤訊息,才能分清是設定不符、依賴缺失,還是功能本身沒有涵蓋。
xmake 的 README 若只列出概念或展示片段,本文就只把它寫成定位。沒有明列的效能、相容性與安全保證,不延伸成承諾;要採用時,應把 從 Lua 專案檔、工具鏈與快取功能檢查 xmake 的適用範圍 對應到實際環境,檢查第 1 個觀察點是否得到預期結果。
xmake.lua、xmake f、xmake run、add_requires、xrepo 對應的資料流
ires 宣告依賴,例如 tbox 1.6.*、zlib 和 libpng ~1.6。README 還展示了 debug 和 release 組態、一個自訂 after_build 腳本(列印並執行命令),以及 Qt QuickApp、CUDA、WDK/UMDF 驅動、Darwin 應用、框架、OpenMP 和 Zig 的範例。語法是 Lua,所以專案檔可以包含函式和條件判斷,但 README 只示範了少數模式,沒有記錄完整 API;完整 API 在文件網站。
README 提供三種一行安裝方法:curl 腳本、wget 腳本和 PowerShell 腳本。其他安裝方法連結到安裝指南。命令列參考假設你目前在專案根目錄。xmake 命令建置目前專案,xmake run console 執行目標,xmake run -d console 在偵錯器下執行,xmake test 執行測試,xmake
在 xmake-io/xmake 的 README 脈絡中,第 2 節要核對的是 xmake.lua、xmake f、xmake run、add_requires、xrepo。先記錄專案版本、作業系統與輸入資料,再執行或閱讀上述入口;觀察命令回傳值、產生的檔案、服務埠或裝置反應。對這個觀察點來說,輸入應保持可重複,輸出則要保留原始檔名、日誌和錯誤訊息,才能分清是設定不符、依賴缺失,還是功能本身沒有涵蓋。
xmake 的 README 若只列出概念或展示片段,本文就只把它寫成定位。沒有明列的效能、相容性與安全保證,不延伸成承諾;要採用時,應把 從 Lua 專案檔、工具鏈與快取功能檢查 xmake 的適用範圍 對應到實際環境,檢查第 2 個觀察點是否得到預期結果。
xmake.lua、xmake f、xmake run、add_requires、xrepo 的首次操作
f 設定平台、架構和模式,xmake f --menu 開啟互動式設定選單。README 沒有說明會附加哪個偵錯器、安裝腳本如何驗證下載的檔案,或平台不在列表中時會發生什麼。
README 列出 Windows、macOS、Linux、FreeBSD、NetBSD、OpenBSD、DragonflyBSD、Solaris、Android、iOS、WatchOS、AppleTVOS、AppleXROS、MSYS、MinGW、Cygwin、Wasm、Haiku、Harmony 和通用交叉工具鏈。工具鏈列表包括 Xcode、MSVC、Clang、GCC、Rust、Swift、CUDA、Zig、Intel 編譯器以及許多嵌入式與模擬器工具鏈。支援的語言包括 C 和 C++、Objective-C、Swift、組合語言、Golang、Rust、Dlang、Fortran、Cuda、Zig、Vala、
在 xmake-io/xmake 的 README 脈絡中,第 3 節要核對的是 xmake.lua、xmake f、xmake run、add_requires、xrepo。先記錄專案版本、作業系統與輸入資料,再執行或閱讀上述入口;觀察命令回傳值、產生的檔案、服務埠或裝置反應。對這個觀察點來說,輸入應保持可重複,輸出則要保留原始檔名、日誌和錯誤訊息,才能分清是設定不符、依賴缺失,還是功能本身沒有涵蓋。
xmake 的 README 若只列出概念或展示片段,本文就只把它寫成定位。沒有明列的效能、相容性與安全保證,不延伸成承諾;要採用時,應把 從 Lua 專案檔、工具鏈與快取功能檢查 xmake 的適用範圍 對應到實際環境,檢查第 3 個觀察點是否得到預期結果。
xmake:用 xmake.lua 組織跨平台建置與套件 的限制與未知
Pascal、Nim、Verilog、多種組譯器、Cppfront、Kotlin、C# 和 Ascend C。專案類型部分涵蓋靜態庫、共享庫、主控台應用、CUDA 程式、Qt 應用、WDK 驅動、WinSDK、MFC、Darwin 應用、框架、SWIG 模組、LuaRocks 模組、Protobuf 程式、Lex/Yacc 程式和 Linux 核心模組。README 沒有說明每種組合的完整程度或測試情況。
內建套件管理器可以自動取得並安裝依賴。README 列出官方 xmake-repo 套件倉庫、Xrepo 命令、使用者自建倉庫,以及 Conan、Conda、Vcpkg、Homebrew、Pacman、Apt、Clib、Dub、Portage、Nimble、Cargo、Zypper 和 NuGet 等第三方來源。它說官方倉庫提供接近 500 多個套件,支援交叉編譯依賴套件,透過 xrepo
在 xmake-io/xmake 的 README 脈絡中,第 4 節要核對的是 xmake.lua、xmake f、xmake run、add_requires、xrepo。先記錄專案版本、作業系統與輸入資料,再執行或閱讀上述入口;觀察命令回傳值、產生的檔案、服務埠或裝置反應。對這個觀察點來說,輸入應保持可重複,輸出則要保留原始檔名、日誌和錯誤訊息,才能分清是設定不符、依賴缺失,還是功能本身沒有涵蓋。
xmake 的 README 若只列出概念或展示片段,本文就只把它寫成定位。沒有明列的效能、相容性與安全保證,不延伸成承諾;要採用時,應把 從 Lua 專案檔、工具鏈與快取功能檢查 xmake 的適用範圍 對應到實際環境,檢查第 4 個觀察點是否得到預期結果。
xmake.lua、xmake f、xmake run、add_requires、xrepo 的維護觀察
env shell 提供套件虛擬環境,為 Windows NT 提供預編譯套件加速,並且可以拉取遠端工具鏈。它還支援依賴版本鎖定。README 沒有定義套件的確切數量,也沒有說明哪些第三方倉庫由 xmake 專案維護。
README 中的分散式編譯一節列出跨平台支援、對 MSVC、Clang、GCC 和其他工具鏈的支援、對 Android、Linux、Windows NT 和 Darwin 主機的支援、除編譯工具鏈外沒有其他依賴、建置伺服器負載平衡、大檔案即時 lz4 壓縮傳輸,以及不需要共享檔案系統。遠端編譯和本機或遠端建置快取由獨立文件頁面連結說明。README 包含一個基於 xmake-core 專案的基準測試,有 Termux 和 macOS 的表格。在平行編譯表中,xmake 在 Termux 上耗時 24.890 秒,在 macOS 上耗時 12.264 秒;ninja 分別為
在 xmake-io/xmake 的 README 脈絡中,第 5 節要核對的是 xmake.lua、xmake f、xmake run、add_requires、xrepo。先記錄專案版本、作業系統與輸入資料,再執行或閱讀上述入口;觀察命令回傳值、產生的檔案、服務埠或裝置反應。對這個觀察點來說,輸入應保持可重複,輸出則要保留原始檔名、日誌和錯誤訊息,才能分清是設定不符、依賴缺失,還是功能本身沒有涵蓋。
xmake 的 README 若只列出概念或展示片段,本文就只把它寫成定位。沒有明列的效能、相容性與安全保證,不延伸成承諾;要採用時,應把 從 Lua 專案檔、工具鏈與快取功能檢查 xmake 的適用範圍 對應到實際環境,檢查第 5 個觀察點是否得到預期結果。
xmake:用 xmake.lua 組織跨平台建置與套件 的採用判斷
25.682 秒和 11.327 秒。README 稱 xmake 與 Ninja 相當,但沒有描述硬體、預熱或測量方法。
外掛部分展示了用於 Visual Studio、CMake、Ninja 和 compile_commands.json 的專案產生器,以及一個可以執行檔案、命令或 REPL 的 Lua 腳本外掛。README 連結了 VS Code、Sublime、IntelliJ、Zed、Vim、Visual Studio 和 Qt Creator 的編輯器整合,以及用於 JNI 建置的 Gradle 外掛。CI 方面提到了一個 GitHub Action 安裝外掛。倉庫使用 Apache-2.0 授權。授權摘錄授予版權授權和專利授權,並規定再分發的條件。它沒有說明任何關於保固、支援或安全的內容。README 還指向一個列出使用 xmake 的專案的頁面,但該頁面的內容不在倉庫中。
在 xmake-io/xmake 的 README 脈絡中,第 6 節要核對的是 xmake.lua、xmake f、xmake run、add_requires、xrepo。先記錄專案版本、作業系統與輸入資料,再執行或閱讀上述入口;觀察命令回傳值、產生的檔案、服務埠或裝置反應。對這個觀察點來說,輸入應保持可重複,輸出則要保留原始檔名、日誌和錯誤訊息,才能分清是設定不符、依賴缺失,還是功能本身沒有涵蓋。
xmake 的 README 若只列出概念或展示片段,本文就只把它寫成定位。沒有明列的效能、相容性與安全保證,不延伸成承諾;要採用時,應把 從 Lua 專案檔、工具鏈與快取功能檢查 xmake 的適用範圍 對應到實際環境,檢查第 6 個觀察點是否得到預期結果。
編輯結論
適合需要直接研究 xmake 並能處理其環境條件的人;不適合把 README 的示範、統計或自報數據當成正式保證。採用前先針對 xmake.lua、xmake f、xmake run、add_requires、xrepo 執行最小流程,保存版本、設定、輸入與輸出,再決定是否納入工作流;若結果不符,回到 xmake-io/xmake 的 README、issue 與 release 逐項比對。
社群筆記