此版本主要修復一些bug和兼容性問題。。linux
修改安裝和卸載的action處理android
更新工程模板ios
加強函數檢測c++
#7: 修復用模板建立工程後,target名不對問題:'[targetname]'git
#9: 修復clang不支持c++11的問題github
修復api做用域泄露問題macos
修復在windows上的一些路徑問題swift
修復檢測宏函數失敗問題windows
修復檢測工具鏈失敗問題api
修復windows上編譯android版本失敗
XMake是一個基於Lua的輕量級跨平臺自動構建工具,支持在各類主流平臺上構建項目
xmake的目標是開發者更加關注於項目自己開發,簡化項目的描述和構建,而且提供平臺無關性,使得一次編寫,隨處構建
它跟cmake、automake、premake有點相似,可是機制不一樣,它默認不會去生成IDE相關的工程文件,採用直接編譯,而且更加的方便易用
採用lua的工程描述語法更簡潔直觀,支持在大部分經常使用平臺上進行構建,以及交叉編譯
而且xmake提供了建立、配置、編譯、打包、安裝、卸載、運行等一些actions,使得開發和構建更加的方便和流程化。
不只如此,它還提供了許多更加高級的特性,例如插件擴展、腳本宏記錄、批量打包、自動文檔生成等等。。
若是你想要了解更多,請參考:
支持windows、mac、linux、ios、android等平臺,自動檢測不一樣平臺上的編譯工具鏈(也可手動配置)
編譯windows項目採用原生vs的工具鏈,不須要使用cygwin、mingw(固然這些也支持)
支持自定義平臺編譯配置,能夠很方便的擴展第三方平臺支持
採用lua腳本語法描述項目,描述規則簡單高效,邏輯規則可靈活修改,而且不會生成相關平臺的工程文件,是工程更加簡單明瞭
支持建立模板工程、配置項目、編譯項目、運行、打包、安裝和卸載等經常使用功能(後續還會增長:自動生成文檔、調試等模塊)
支持編譯c/c++/objc/swift成靜態庫、動態庫、命令行可執行程序
提供豐富的工程描述api,使用簡單靈活,例如添加編譯文件只需(還支持過濾排除):
add_files("src/*.c", "src/asm/**.S", "src/*.m")
支持頭文件、接口、連接庫依賴、類型的自動檢測,並可自動生成配置頭文件config.h
支持自定義編譯配置開關,例如若是在工程描述文件中增長了enable_xxx
的開關,那麼配置編譯的時候就能夠手動進行配置來啓用它:
xmake config --enable_xxx=y
提供一鍵打包功能,無論在哪一個平臺上進行打包,都只須要執行一條相同的命令,很是的方便
支持全局配置,一些經常使用的項目配置,例如工具鏈、規則描述等等,均可以進行全局配置,這樣就不須要每次編譯不一樣工程,都去配置一遍
除了能夠自動檢測依賴模塊,也支持手動強制配置模塊,還有各類編譯flags。
支持插件擴展、平臺擴展、模板擴展、選項自定義等高級功能
提供一些內置的經常使用插件(例如:自動生成doxygen文檔插件,宏腳本記錄和運行插件)
宏記錄插件裏面提供了一些內置的宏腳本(例如:批量打包一個平臺的全部archs等),也能夠在命令行中手動記錄宏並回放執行
提供強大的task任務機制
不依賴makefile和make,實現直接編譯,內置自動多任務加速編譯, xmake是一個真正的構架工具,而不單單是一個工程文件生成器
自動檢測ccache,進行自動緩存提高構建速度
config: 構建以前的編譯參數配置
global: 配置一些全局參數
build: 構建項目
clean: 清理一些二進制文件、臨時文件
create: 使用模板建立新工程
package: 打包指定目標
install: 安裝編譯後的目標文件
uninstall: 卸載安裝的全部文件
run: 運行可執行的項目目標
doxygen文檔生成插件: 從指定源碼目錄生成doxygen文檔
宏記錄腳本插件: 記錄和回放宏腳本,簡化重複的命令操做(例如:批量打包。。)
hello插件: 插件開發demo
工程文件生成插件: 建立IDE的工程文件 (目前支持:makefile,後續支持:vs, xcode等等)
C/C++
Objc/Objc++
Swift
Assembly
Windows (x86, x64, amd64, x86_amd64)
Macosx (i386, x86_64)
Linux (i386, x86_64, cross-toolchains ...)
Android (armv5te, armv6, armv7-a, armv8-a, arm64-v8a)
iPhoneos (armv7, armv7s, arm64, i386, x86_64)
Watchos (armv7k, i386)
Mingw (i386, x86_64)
自動包依賴管理和下載
建立移植倉庫,實現一人移植,多人共享
更多的插件開發
自動生成vs,xcode等工程文件
建立一個c++ console項目:
xmake create -l c++ -t 1 console or xmake create --language=c++ --template=1 console
工程描述文件:xmake.lua
target("console") set_kind("binary") add_files("src/*.c")
配置工程:
這個是可選的步驟,若是隻想編譯當前主機平臺的項目,是能夠不用配置的,默認編譯release版本。
xmake f -p iphoneos -m debug or xmake f --plat=macosx --arch=x86_64 or xmake f -p windows or xmake config --plat=iphoneos --mode=debug or xmake config --plat=android --arch=armv7-a --ndk=xxxxx or xmake config -p linux -a i386 or xmake config -p mingw --cross=i386-mingw32- --toolchains=/xxx/bin or xmake config -p mingw --sdk=/mingwsdk or xmake config --help
編譯工程:
xmake or xmake -r or xmake --rebuild
運行目標:
xmake r console or xmake run console
打包全部:
xmake p or xmake package or xmake package console or xmake package -o /tmp or xmake package --output=/tmp
經過宏腳本打包全部架構:
xmake m package or xmake m package -p iphoneos or xmake m package -p macosx -f "-m debug" -o /tmp/ or xmake m package --help
安裝目標:
xmake i or xmake install or xmake install console or xmake install -o /tmp or xmake install --output=/tmp
詳細使用方式和參數說明,請參考文檔
或者運行:
xmake -h or xmake --help or xmake config --help or xmake package --help or xmake macro --help ...
-- the debug mode if is_mode("debug") then -- enable the debug symbols set_symbols("debug") -- disable optimization set_optimize("none") end -- the release mode if is_mode("release") then -- set the symbols visibility: hidden set_symbols("hidden") -- enable fastest optimization set_optimize("fastest") -- strip all symbols set_strip("all") end -- add target target("test") -- set kind set_kind("static") -- add files add_files("src/*.c")