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

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

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

      xmake v2.6.4 發(fā)布,大量包管理特性改進

      Xmake 是一個基于 Lua 的輕量級跨平臺構建工具。

      它非常的輕量,沒有任何依賴,因為它內(nèi)置了 Lua 運行時。

      它使用 xmake.lua 維護項目構建,相比 makefile/CMakeLists.txt,配置語法更加簡潔直觀,對新手非常友好,短時間內(nèi)就能快速入門,能夠讓用戶把更多的精力集中在實際的項目開發(fā)上。

      我們能夠使用它像 Make/Ninja 那樣可以直接編譯項目,也可以像 CMake/Meson 那樣生成工程文件,另外它還有內(nèi)置的包管理系統(tǒng)來幫助用戶解決 C/C++ 依賴庫的集成使用問題。

      目前,Xmake 主要用于 C/C++ 項目的構建,但是同時也支持其他 native 語言的構建,可以實現(xiàn)跟 C/C++ 進行混合編譯,同時編譯速度也是非常的快,可以跟 Ninja 持平。

      Xmake = Build backend + Project Generator + Package Manager
      

      新特性介紹

      更靈活的包擴展

      現(xiàn)在,我們可以通過 set_base 接口去繼承一個已有的包的全部配置,然后在此基礎上重寫部分配置。

      這通常在用戶自己的項目中,修改 xmake-repo 官方倉庫的內(nèi)置包比較有用,比如:修復改 urls,修改版本列表,安裝邏輯等等。

      例如,修改內(nèi)置 zlib 包的 url,切到自己的 zlib 源碼地址。

      package("myzlib")
          set_base("zlib")
          set_urls("https://github.com/madler/zlib.git")
      package_end()
      
      add_requires("myzlib", {system = false, alias = "zlib"})
      
      target("test")
          set_kind("binary")
          add_files("src/*.c")
          add_packages("zlib")
      

      我們也可以用來單純添加一個別名包。

      package("onetbb")
          set_base("tbb")
      

      我們可以通過 add_requires("onetbb") 集成安裝 tbb 包,只是包名不同而已。

      包管理支持工具鏈切換

      之前,我們限制了只能在 cross 平臺下切換包安裝的工具鏈,新版本中,我們可以支持更多平臺下,對工具鏈的切換。

      例如:

      $ xrepo install --toolchains=clang zlib
      

      我們可以在 linux 等平臺上,快速切換到 clang 工具鏈編譯安裝 zlib 庫。

      我們也可以在 xmake.lua 的配置文件中去切換他們。

      add_requires("zlib", {configs = {toolchains = "gcc-11"}})
      

      不同的工具鏈安裝的 zlib 包,會被分別存儲在不同目錄,互不干擾,不會存在編譯器差異導致的鏈接兼容問題。

      內(nèi)置的包虛擬環(huán)境

      Xrepo 命令之前已經(jīng)很好的支持了包虛擬環(huán)境管理,xrepo env shell,但是對于復雜的包環(huán)境,還是需要用戶自己配置一個 xmake.lua 文件,用于管理自己的包環(huán)境。

      例如,我們需要一個常用的開發(fā)環(huán)境 shell,默認帶有 cmake, python 和 vs/autoconf 等常用的開發(fā)工具鏈,我們需要自己起一個配置文件 devel.lua。

      add_requires("cmake")
      add_requires("python")
      if is_host("linux", "bsd", "macosx") then
          add_requires("pkg-config", "autoconf", "automake", "libtool")
      elseif is_host("windows") then
          set_toolchains("msvc")
      end
      

      然后,執(zhí)行下面的命令去導入到全局配置。

      $ xrepo env --add devel.lua
      

      這樣,我們可以通過下面的命令,去加載 shell 綁定這個環(huán)境:

      $ xrepo env -b devel shell
      > cmake --version
      cmake version 3.19.3
      

      而在新版本中,我們內(nèi)置了一些常用的環(huán)境,可以通過 xrepo env -l 查看:

      $ xrepo env -l
        - msvc
        - llvm-mingw
        - llvm
        - mingw-w64
        - devel
        - python3
        - depot_tools
        - python2
      

      其中 devel 也在里面,所以,我們只需要執(zhí)行 xrepo env -b devel shell 就可以帶起一個 devel 開發(fā)環(huán)境,而不需要自己配置它們。

      像 python, msvc 等也都是一些比較常用的環(huán)境,都可以直接使用。

      當然,我們也支持臨時在本地創(chuàng)建一個 xmake.lua 來配置加載包環(huán)境,而不放置到全局配置中去。

      自定義安裝包下載

      我們可以通過新增的 on_download 接口,自定義包的下載邏輯,通常用不到,使用 Xmake 的內(nèi)置下載就足夠了。

      如果用戶自建私有倉庫,對包的下載有更復雜的鑒權機制,特殊處理邏輯,那么可以重寫內(nèi)部的下載邏輯來實現(xiàn)。

      on_download(function (package, opt)
          -- download packages:urls() to opt.sourcedir
      end)
      

      opt 參數(shù)里面,可以獲取到下載包的目的源碼目錄 opt.sourcedir,我們只需要從 package:urls() 獲取到包地址,下載下來就可以了。

      然后,根據(jù)需要,添加一些自定義的處理邏輯。另外,自己可以添加下載緩存處理等等。

      ASN.1 程序構建支持

      ASN.1 程序,需要借助 ASN.1 Compiler 去生成相關的 .c 文件參與項目編譯。

      而 Xmake 內(nèi)置提供了 add_rules("asn1c") 規(guī)則去處理 .c 文件生成,add_requires("asn1c") 自動拉取集成 ASN.1 編譯器工具。

      下面是一個基礎的配置例子:

      add_rules("mode.debug", "mode.release")
      add_requires("asn1c")
      
      target("test")
          set_kind("binary")
          add_files("src/*.c")
          add_files("src/*.asn1")
          add_rules("asn1c")
          add_packages("asn1c")
      

      具體見 完整例子工程

      支持全平臺構建 Swift 程序

      之前,Xmake 僅支持 macOS 下借助 Xcode 工具鏈實現(xiàn)對 Swift 程序的構建,新版本中,我們也進行了改進,可以獨立使用 swift 工具鏈,支持在 linux/windows 上構架 swift 程序,用法跟之前相同。

      支持指定符號列表導出

      在之前的版本中,我們提供了 utils.symbols.export_all 對 windows 的 dll 庫實現(xiàn)自動的完整符號導出。

      這盡管很方便,但只能支持 windows 程序,并且全量導出對生成的 dll 大小不好控制,有可能會存在不少根本不需要的內(nèi)部符號被導出。

      而,我們新版本提供的 utils.symbols.export_list 規(guī)則,可以在 xmake.lua 里面直接定義導出的符號列表,例如:

      target("foo")
          set_kind("shared")
          add_files("src/foo.c")
          add_rules("utils.symbols.export_list", {symbols = {
              "add",
              "sub"}})
      

      或者,在 *.export.txt 文件中添加導出的符號列表。

      target("foo2")
          set_kind("shared")
          add_files("src/foo.c")
          add_files("src/foo.export.txt")
          add_rules("utils.symbols.export_list")
      

      完整的工程例子見:導出符號例子

      通過指定符號導出,我們可以使得生成的動態(tài)庫盡可能的小,無關的內(nèi)部符號完全不去導出它們,另外這個規(guī)則支持 linux, macOS 和 windows,更加的通用。

      它內(nèi)部會自動使用 .def, version scripts 和 --exported_symbols_list 去處理符號導出。

      內(nèi)置支持 linker scripts

      新版中,我們也內(nèi)置了 對 linker scripts 和 version scripts 文件的支持,我們可以使用 add_files 直接添加它們,而不需要配置 add_ldflags("-Txxx.lds")

      當前支持 .ld.lds 作為 linker scripts 配置文件來添加:

      add_rules("mode.debug", "mode.release")
      
      target("test")
          add_deps("foo")
          set_kind("binary")
          add_files("src/main.c")
          add_files("src/main.lds")
      

      我們也支持 .ver, .map 后綴文件作為 version script 來添加。

      target("foo")
          set_kind("shared")
          add_files("src/foo.c")
          add_files("src/foo.map")
      

      foo.map 文件內(nèi)容如下:

      {
          global:
              foo;
      
          local:
              *;
      };
      

      更新內(nèi)容

      新特性

      • #2011: 支持繼承和局部修改官方包,例如對現(xiàn)有的包更換 urls 和 versions
      • 支持在 sparc, alpha, powerpc, s390x 和 sh4 上編譯運行 xmake
      • 為 package() 添加 on_download 自定義下載
      • #2021: 支持 Linux/Windows 下構建 Swift 程序
      • #2024: 添加 asn1c 支持
      • #2031: 為 add_files 增加 linker scripts 和 version scripts 支持
      • #2033: 捕獲 ctrl-c 去打印當前運行棧,用于調(diào)試分析卡死問題
      • #2059: 添加 xmake update --integrate 命令去整合 shell
      • #2070: 添加一些內(nèi)置的 xrepo env 環(huán)境配置
      • #2117: 支持為任意平臺傳遞工具鏈到包
      • #2121: 支持導出指定的符號列表,可用于減少動態(tài)庫的大小

      改進

      • #2036: 改進 xrepo 支持從配置文件批量安裝包,例如:xrepo install xxx.lua
      • #2039: 改進 vs generator 的 filter 目錄展示
      • #2025: 支持為 phony 和 headeronly 目標生成 vs 工程
      • 優(yōu)化 vs 和 codesign 的探測速度
      • #2077: 改進 vs 工程生成器去支持 cuda

      Bugs 修復

      • #2005: 修復 path.extension
      • #2008: 修復 windows manifest 文件編譯
      • #2016: 修復 vs project generator 里,對象文件名沖突導致的編譯失敗
      posted @ 2022-03-07 14:14  waruqi  Views(107)  Comments(0)    收藏  舉報
      主站蜘蛛池模板: 国产精品成人久久电影| 激情六月丁香婷婷四房播| 亚洲综合色网一区二区三区| 欧美性猛交xxxx富婆| 92久久精品一区二区| 国产欧亚州美日韩综合区| 日韩成人福利视频在线观看| 成人午夜在线观看日韩| 南城县| 内射无套内射国产精品视频| 国产亚洲精品成人av一区| 最新亚洲人成无码网站欣赏网| 丝袜高潮流白浆潮喷在线播放| 大乳丰满人妻中文字幕日本| 久久亚洲综合精品成人网| 日韩国产av一区二区三区精品 | 亚洲成人资源在线观看| 亚洲欧美日韩久久一区二区| 中文字幕日韩有码一区| 人人妻人人做人人爽| 亚洲欧美日韩综合久久| 天天躁夜夜躁狠狠喷水| 亚洲男女一区二区三区| 老熟女高潮一区二区三区| 亚洲成人av一区二区| 中文字幕有码高清日韩| 国产在线观看91精品亚瑟| 最新国产精品好看的精品| 武装少女在线观看高清完整版免费| 国产360激情盗摄全集| 中文字幕亚洲综合久久青草| 男女无遮挡激情视频| 亚洲第一狼人天堂网伊人| 激情伊人五月天久久综合| 内射干少妇亚洲69xxx| 亚洲国产精品老熟女乱码| 人妻少妇不满足中文字幕| 国产精品天干天干综合网| 毛片亚洲AV无码精品国产午夜| 97人妻中文字幕总站| 通许县|