免费A级毛片无码专区网站-成人国产精品视频一区二区-啊 日出水了 用力乖乖在线-国产黑色丝袜在线观看下-天天操美女夜夜操美女-日韩网站在线观看中文字幕-AV高清hd片XXX国产-亚洲av中文字字幕乱码综合-搬开女人下面使劲插视频

Xmake v2.7.3 發(fā)布,包組件和 C++ 模塊增量構(gòu)建支持

Xmake 是一個(gè)基于 Lua 的輕量級(jí)跨平臺(tái)構(gòu)建工具 。
它非常的輕量,沒(méi)有任何依賴,因?yàn)樗鼉?nèi)置了 Lua 運(yùn)行時(shí) 。
它使用 xmake.lua 維護(hù)項(xiàng)目構(gòu)建,相比 makefile/CMakeLists.txt,配置語(yǔ)法更加簡(jiǎn)潔直觀,對(duì)新手非常友好,短時(shí)間內(nèi)就能快速入門,能夠讓用戶把更多的精力集中在實(shí)際的項(xiàng)目開(kāi)發(fā)上 。
我們能夠使用它像 Make/Ninja 那樣可以直接編譯項(xiàng)目,也可以像 CMake/Meson 那樣生成工程文件,另外它還有內(nèi)置的包管理系統(tǒng)來(lái)幫助用戶解決 C/C++ 依賴庫(kù)的集成使用問(wèn)題 。
目前,Xmake 主要用于 C/C++ 項(xiàng)目的構(gòu)建,但是同時(shí)也支持其他 native 語(yǔ)言的構(gòu)建,可以實(shí)現(xiàn)跟 C/C++ 進(jìn)行混合編譯,同時(shí)編譯速度也是非常的快,可以跟 Ninja 持平 。
Xmake = Build backend + Project Generator + Package Manager + [Remote|Distributed] Build + Cache盡管不是很準(zhǔn)確,但我們還是可以把 Xmake 按下面的方式來(lái)理解:
Xmake ~= Make/Ninja + CMake/Meson + Vcpkg/Conan + distcc + ccache/sccache

  • 項(xiàng)目源碼
  • 官方文檔
  • 入門課程

Xmake v2.7.3 發(fā)布,包組件和 C++ 模塊增量構(gòu)建支持

文章插圖
新特性介紹包組件支持背景簡(jiǎn)介這個(gè)新特性主要用于實(shí)現(xiàn)從一個(gè) C/C++ 包中集成特定的子庫(kù),一般用于一些比較大的包中的庫(kù)組件集成 。
因?yàn)檫@種包里面提供了很多的子庫(kù),但不是每個(gè)子庫(kù)用戶都需要,全部鏈接反而有可能會(huì)出問(wèn)題 。
盡管,之前的版本也能夠支持子庫(kù)選擇的特性,例如:
add_requires("sfml~foo", {configs = {graphics = true, window = true}})add_requires("sfml~bar", {configs = {network = true}})target("foo")set_kind("binary")add_packages("sfml~foo")target("bar")set_kind("binary")add_packages("sfml~bar")這是通過(guò)每個(gè)包的自定義配置來(lái)實(shí)現(xiàn)的,但這種方式會(huì)存在一些問(wèn)題:
  1. sfml~foosfml~bar 會(huì)作為兩個(gè)獨(dú)立的包,重復(fù)安裝,占用雙倍的磁盤空間
  2. 也會(huì)重復(fù)編譯一些共用代碼,影響安裝效率
  3. 如果一個(gè)目標(biāo)同時(shí)依賴了 sfml~foosfml~bar,會(huì)存在鏈接沖突
如果是對(duì)于 boost 這種超大包的集成,重復(fù)編譯和磁盤占用的影響會(huì)非常大,如果在子庫(kù)組合非常多的情況下,甚至?xí)?dǎo)致超過(guò) N 倍的磁盤占用 。
為了解決這個(gè)問(wèn)題,Xmake 新增了包組件模式,它提供了以下一些好處:
  1. 僅僅一次編譯安裝,任意多個(gè)組件快速集成,極大提升安裝效率,減少磁盤占用
  2. 組件抽象化,跨編譯器和平臺(tái),用戶不需要關(guān)心如何配置每個(gè)子庫(kù)之間鏈接順序依賴
  3. 使用更加方便
更多背景詳情見(jiàn):#2636
使用包組件對(duì)于用戶,使用包組件是非常方便的,因?yàn)橛脩羰遣恍枰S護(hù)包的,只要使用的包,它配置了相關(guān)的組件集,我們就可以快速集成和使用它,例如:
add_requires("sfml")target("foo")set_kind("binary")add_packages("sfml", {components = "graphics"})target("bar")set_kind("binary")add_packages("sfml", {components = "network"})查看包組件那么,如何知道指定的包提供了哪些組件呢?我們可以通過(guò)執(zhí)行下面的命令查看:
$ xrepo info sfmlThe package info of project:require(sfml):-> description: Simple and Fast Multimedia Library-> version: 2.5.1...-> components:-> system:-> graphics: system, window-> window: system-> audio: system-> network: system包組件配置如果你是包的維護(hù)者,想要將一個(gè)包增加組件支持,那么需要通過(guò)下面兩個(gè)接口來(lái)完成包組件的配置: