开源 C/C++ 库征集 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
waruqi

开源 C/C++ 库征集

  •  2
     
  •   waruqi
    waruqi 2021 年 3 月 29 日 3537 次点击
    这是一个创建于 1852 天前的主题,其中的信息可能已经有所发展或是发生改变。

    xmake 一直在力解决 C/C++ 包依赖管理和使用问题,为了方便 C/C++ 开发者能够快速集成使用 C/C++ 依赖包,我们在 xmake-repo 包仓库中已经维护了将近 300 个常用包

    尽管还远远不如 vcpkg, conan 提供的包多,但是我们提供了更加强大的特性支持:版本语义支持交叉编译包支持更多的平台支持定制化包配置编译安装编译工具链包远程拉取支持等等

    为了更加丰富我们的包仓库,提供更多优质的 C/C++ 库给用户快速集成和使用,现向广大开源作者征集 C/C++ 库。

    如果你是 C/C++ 库开源作者,只要您的库满足以下条件:

    1. github star >=300
    2. 长期活跃维护
    3. 有完善的 README 介绍
    4. 有至少一种构建工具维护:autotools, cmake, xmake, scons, meson, gnumake ...

    那么,可以通过回复留言的方式,告知于我,我都会陆续将其收录到我们的包仓库,方便用户能够快速使用您的库。

    回复方式:

    • 库描述:xxx
    • 仓库地址:xxx
    • 主要贡献者:xxx

    不过由于我个人时间精力有限,具体收录时间会有些滞后,如果没有及时收录,请耐心等待

    当然,如果你有时间,也可以参考文档,自己提交到我们的仓库,过程也非常简单:提交包到 xmake 仓库说明

    其实就是类似 homebrew 的维护方式,一个包的定义大概就是下面这样

    package("libogg") set_homepage("https://www.xiph.org/ogg/") set_description("Ogg Bitstream Library") set_urls("https://gitlab.xiph.org/xiph/ogg/-/archive/$(version)/ogg-$(version).tar.gz", "https://gitlab.xiph.org/xiph/ogg.git") add_versions("v1.3.4", "62cc64b9fd3cf57bde3a9033e94534ba34313d2bb9698029f623121a4e47bb9b") add_patches("v1.3.4", path.join(os.scriptdir(), "patches", "1.3.4", "macos_fix.patch"), "e12c41ad71206777f399c1048914e5e5a2fe44e18d0d50ebe9bedbfbe0624c35") add_deps("cmake") if is_plat("cross") and is_subhost("windows") then add_deps("make") end on_install("windows", "macosx", "linux", "mingw", "iphoneos", "android", "cross", function (package) local cOnfigs= {"-DBUILD_TESTING=OFF"} table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release")) table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF")) table.insert(configs, "-DCMAKE_POSITION_INDEPENDENT_CODE=ON") import("package.tools.cmake").install(package, configs) end) on_test(function (package) assert(package:has_cfuncs("ogg_sync_init", {includes = {"stdint.h", "ogg/ogg.h"}})) end) 

    如果您不是开源库作者,但是有想使用的 C/C++ 库,也可以回复到 issues#10,后续有时间,我也会考虑收录。

    xmake 介绍

    xmake是一个现代化的 C/C++ 构建工具,它提供了方便快捷的 C/C++ 依赖包管理和集成支持

    xmake 不仅能够快速集成使用 vcpkg, conan, brew, pacman, clib, dub 等包管理器中的包,也有自建的包管理器,以及自有包仓库维护 xmake-repo

    集成使用方式非常简单,同时支持多版本语义支持,例如:

    add_requires("tbox >1.6.1", "libuv master", "vcpkg::ffmpeg", "brew::pcre2/libpcre2-8") add_requires("conan::openssl/1.1.1g", {alias = "openssl", optiOnal= true, debug = true}) target("test") set_kind("binary") add_files("src/*.c") add_packages("tbox", "libuv", "vcpkg::ffmpeg", "brew::pcre2/libpcre2-8", "openssl") 

    同时,我们也提供了独立的 cli 包管理工具 xrepo,用于方便管理维护 c/c++ 包,例如:

    $ xrepo install "zlib 1.2.x" $ xrepo install zlib "tbox >=1.6" $ xrepo install -p iphoneos -a arm64 zlib $ xrepo install -p android [--ndk=/xxx] zlib $ xrepo install -p mingw [--mingw=/xxx] zlib $ xrepo install -p cross --sdk=/xxx/arm-linux-musleabi-cross zlib 

    相关链接

    14 条回复    2021-07-01 19:53:03 +08:00
    yitingbai
        1
    yitingbai  
       2021 年 3 月 29 日
    C++的包管理真是永远的痛
    waruqi
        2
    waruqi  
    OP
       2021 年 3 月 29 日 via Android
    @yitingbai 使用 xmake 可以减少痛苦
    Chenamy2017
        3
    Chenamy2017  
       2021 年 3 月 29 日
    看着不错啊,点赞
    QBugHunter
        4
    QBugHunter  
       2021 年 3 月 29 日
    比 Cmake 的优势是?
    waruqi
        5
    waruqi  
    OP
       2021 年 3 月 29 日
    @QBugHunter cmake 没有内置的包管理,只能对接 vcpkg/conan,并且 xmake 还支持远程自动拉取交叉编译工具链,以及对依赖包做交叉编译,即使是 vcpkg/conan 也不支持编译工具链的管理
    dbskcnc
        6
    dbskcnc  
       2021 年 3 月 29 日
    支持,虽然还没用上
    joshua7v
        7
    joshua7v  
       2021 年 3 月 29 日
    看了下 ffmpeg 还没支持 windows ?
    waruqi
        8
    waruqi  
    OP
       2021 年 3 月 29 日
    @joshua7v 有些库还没,得看库自身的构建系统支持,如果是 cmake/scons/meson/xmake 维护的,windows 基本上都能快速支持,而 ffmpeg 仅有 autotools,理论上也能做成 windows 支持,至少 mingw on msys2 的可以搞

    但是需要目前以我一个人的人力 暂时没时间弄,对于不支持的平台,暂时可以切到 vcpkg/conan 包,也许将来有时间了,我也会整进去
    waruqi
        9
    waruqi  
    OP
       2021 年 3 月 29 日 via Android
    挂了一天 也没来一个库,哎。
    dlyxy
        10
    dlyxy  
       2021 年 3 月 30 日
    可以支持下 grpc gflags brpc braft 等
    Q4h7388nR28s95fa
        11
    Q4h7388nR28s95fa  
       2021 年 6 月 20 日
    @waruqi 大佬能不能支持一下 quickjs https://bellard.org/quickjs/
    Q4h7388nR28s95fa
        12
    Q4h7388nR28s95fa  
       2021 年 6 月 20 日
    库描述:QuickJS

    QuickJS is a small and embeddable Javascript engine. It supports the ES2020 specification including modules, asynchronous generators, proxies and BigInt.

    仓库地址: https://github.com/bellard/quickjs

    主要贡献者:bellard
    waruqi
        13
    waruqi  
    OP
       2021 年 7 月 1 日 via Android
    Q4h7388nR28s95fa
        14
    Q4h7388nR28s95fa  
       2021 年 7 月 1 日
    @waruqi 已提交,感谢!
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     999 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 109ms UTC 22:58 PVG 06:58 LAX 15:58 JFK 18:58
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86