xmake v2.1.9版本發佈,增長可視化圖形菜單配置

此版本主要增長xmake f --menu實現用戶自定義圖形菜單配置,界面風格相似linux的make menuconfightml

更多使用說明,請閱讀:文檔手冊linux

項目源碼:Github, Gitee.git

新特性

  • 添加del_files()接口去從已添加的文件列表中移除一些文件
  • 添加rule(), add_rules()接口實現自定義構建規則,而且改進add_files("src/*.md", {rule = "markdown"})
  • 添加os.filesize()接口
  • 添加core.ui.xxx等cui組件模塊,實現終端可視化界面,用於實現跟用戶進行短暫的交互
  • 經過xmake f --menu實現可視化菜單交互配置,簡化工程的編譯配置
  • 添加set_values接口到option
  • 改進option,支持根據工程中用戶自定義的option,自動生成可視化配置菜單
  • 在調用api設置工程配置時以及在配置菜單中添加源文件位置信息

改進

  • 改進交叉工具鏈配置,經過指定工具別名定向到已知的工具鏈來支持未知編譯工具名配置, 例如: xmake f --cc=gcc@ccmips.exe
  • #151: 改進mingw平臺下動態庫生成
  • 改進生成makefile插件
  • 改進檢測錯誤提示
  • 改進add_cxflags等flags api的設置,添加force參數,來禁用自動檢測和映射,強制設置選項:add_cxflags("-DTEST", {force = true})
  • 改進add_files的flags設置,添加force域,用於設置不帶自動檢測和映射的原始flags:add_files("src/*.c", {force = {cxflags = "-DTEST"}})
  • 改進搜索工程根目錄策略
  • 改進vs環境探測,支持加密文件系統下vs環境的探測
  • 升級luajit到最新2.1.0-beta3
  • 增長對linux/arm, arm64的支持,能夠在arm linux上運行xmake
  • 改進vs201x工程生成插件,更好的includedirs設置支持

Bugs修復

  • 修復依賴修改編譯和連接問題
  • #151: 修復os.nuldev()在mingw上傳入gcc時出現問題
  • #150: 修復windows下ar.exe打包過長obj列表參數,致使失敗問題
  • 修復xmake f --cross沒法配置問題
  • 修復os.cd到windows根路徑問題

新特性介紹

新增del_files接口實現從源文件列表中刪除指定文件

經過此接口,能夠從前面add_files接口添加的文件列表中,刪除指定的文件,例如:github

target("test")
    add_files("src/*.c")
    del_files("src/test.c")

上面的例子,能夠從src目錄下添加除test.c之外的全部文件,固然這個也能夠經過add_files("src/*.c|test.c")來達到相同的目的,可是這種方式更加靈活。windows

例如,咱們能夠條件判斷來控制刪除哪些文件,而且此接口也支持add_files的匹配模式,過濾模式,進行批量移除。api

target("test")
    add_files("src/**.c")
    del_files("src/test*.c")
    del_files("src/subdir/*.c|xxx.c")
    if is_plat("iphoneos") then
        add_files("xxx.m")
    end

經過上面的例子,咱們能夠看出add_filesdel_files是根據調用順序,進行順序添加和刪除的,而且經過del_files("src/subdir/*.c|xxx.c")刪除一批文件,
而且排除src/subdir/xxx.c(就是說,不刪除這個文件)。markdown

經過rule()接口實現用戶自定義編譯規則

在2.1.9版本以後,xmake不只原生內置支持多種語言文件的構建,並且還能夠經過自定義構建規則,讓用戶本身來實現複雜的未知文件構建。iphone

咱們能夠經過預先設置規則支持的文件後綴,來擴展其餘文件的構建支持:工具

-- 定義一個markdown文件的構建規則
rule("markdown")
    set_extensions(".md", ".markdown")
    on_build(function (target, sourcefile)
        os.cp(sourcefile, path.join(target:targetdir(), path.basename(sourcefile) .. ".html"))
    end)

target("test")
    set_kind("binary")
    
    -- 使test目標支持markdown文件的構建規則
    add_rules("markdown")

    -- 添加markdown文件的構建
    add_files("src/*.md")
    add_files("src/*.markdown")

咱們也能夠指定某些零散的其餘文件做爲markdown規則來處理:ui

target("test")
    -- ...
    add_files("src/test/*.md.in", {rule = "markdown"})

<p class="tips">
經過add_files("*.md", {rule = "markdown"})方式指定的規則,優先級高於add_rules("markdown")設置的規則。
</p>

咱們還能夠實現規則的級聯構建,例如在構建man規則後,繼續調用markdown規則,實現級聯構建:

rule("man")
    add_imports("core.project.rule")
    on_build(function (target, sourcefile)
        rule.build("markdown", target, sourcefile)
    end)

對於有些文件,須要支持多文件構建生成單一對象的模式,能夠經過on_build_all來實現:

rule("man")
    on_build_all(function (target, sourcefiles)
        -- build some source files
        for _, sourcefile in ipairs(sourcefiles) do
            -- ...
        end
    end)

target("test")
    -- ...
    add_files("src/test/*.doc.in", {rule = "man"})

經過xmake f --menu實現可視化菜單配置

以前的版本,使用option可實現命令行菜單選項的用戶自定義,當工程配置至關多的狀況下,採用這種命令行配置的方式就不是很靈活了。

所以在2.1.9版本中,咱們擴展了option,使其原生支持xmake f --menu的圖形化配置界面,實現複雜的分級配置,而且支持配置的模糊查找和定位,配置項目更加靈活方便。

咱們能夠經過set_category設置option的分級路徑名set_category("root/submenu/submenu2"),例如:

-- 'boolean' option
option("test1")
    set_default(true)
    set_showmenu(true)
    set_category("root menu/test1")

-- 'choice' option with values: "a", "b", "c"
option("test2")
    set_default("a")
    set_values("a", "b", "c")
    set_showmenu(true)
    set_category("root menu/test2")

-- 'string' option
option("test3")
    set_default("xx")
    set_showmenu(true)
    set_category("root menu/test3/test3")

-- 'number' option
option("test4")
    set_default(6)
    set_showmenu(true)
    set_category("root menu/test4")

上述配置最後顯示的菜單界面路徑結構:

  • root menu

    • test1
    • test2
    • test3

      • test3
    • test4

效果圖以下:

而且咱們還能夠經過set_values,提供選項值列表供用戶快速選擇使用,例如:

option("test")
    set_default("b")
    set_showmenu(true)
    set_values("a", "b", "c")

效果圖以下:

搜索用戶配置

原文出處:http://tboox.org/cn/2018/02/03/update-v2.1.9/

相關文章
相關標籤/搜索