C/C++ 第三方的依赖管理怎么做啊? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
huyangq
V2EX    程序员

C/C++ 第三方的依赖管理怎么做啊?

  •  
  •   huyangq 2025 年 11 月 26 日 2186 次点击
    这是一个创建于 51 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,c/c++的依赖管理怎么弄啊,对了,假如还考虑 windows 和 linux2 个平台。 其他的语言感觉都很方便啊

    比如 java 就简单,maven 就行,就是在 pom.xml 加上就行

    rust 有 cargo + crate.io 执行 cargo add xxx 就可以

    python 现在用 uv uv add xxx 就可以

    js npm add xxx 就可以

    但是 c/cpp 怎么弄啊?

    18 条回复    2025-11-28 20:51:52 +08:00
    chtcrack
        1
    chtcrack  
       2025 年 11 月 26 日
    windows 下有 vcpkg 管理,linux 下就不知道啦,因为没用 linux 编程.
    xtreme1
        2
    xtreme1  
       2025 年 11 月 26 日
    Linux 下也有 vcpkg.
    qieqie
        3
    qieqie  
       2025 年 11 月 26 日
    纯源码依赖的直接 git submodule ,或者直接复制一份
    有二进制的更麻烦一点,还要考虑如何链接,安装 prebuilt 可以用系统的,不太纠结版本的 apt yum brew 安装就好了,或在 cmake 里 FetchContent ,
    最后就是第三方的包管理器,conan vcpkg 啥的
    sagnitude
        4
    sagnitude  
       2025 年 11 月 26 日
    自己写 cmake ,和各种 findxxx.cmake ,再祈祷用到的库都能在开发机器上简简单单的 make install ,做成 git submodule 然后 cmake 调用

    这是个很烦人的活,但现在这种 dirty work 可以给 ai 生成

    [img]https://imgur.com/a/chPpz89[/img]

    [img]https://imgur.com/a/LBx0dnd[/img]
    momo1999
        5
    momo1999  
       2025 年 11 月 26 日
    我用 xmake ,还不够就加上 vcpkg 。
    xFrye
        6
    xFrye  
       2025 年 11 月 26 日
    可以试试 v 友出品的 xmake
    realwxg
        7
    realwxg  
       2025 年 11 月 26 日
    lixile
        8
    lixile  
       2025 年 11 月 26 日
    工具有 好用且全面的中心库 无
    自己维护内源 conan 在对应平台 编译(包括编译选项控制和编译调优) 然后上传来使用
    Thymolblue
        9
    Thymolblue  
       2025 年 11 月 26 日
    尽量使用 CMake 的第三方库,因为 findxxx 会很方便,手搓个脚本来执行这些库的跨平台编译(通常只需要 CMake 预处理和编译这两个步骤)。Windows 上兼容性比较好通常不需要再细分版本重新编译。Linux 平台就用 Dockerfile 之类的起目标平台容器来维护依赖。
    lcsoft
        10
    lcsoft  
       2025 年 11 月 26 日
    可以试试 xmake
    shylockhg
        11
    shylockhg  
       2025 年 11 月 26 日
    把所有 lib 放一个 cmake 工程用 external project 管理,编译安装 tar 打包,根据 libc 版本,区分不同 tar 包
    shylockhg
        12
    shylockhg  
       2025 年 11 月 26 日
    win 和 linux 就继续区分不同 tar 包就行
    wzhy
        13
    wzhy  
       2025 年 11 月 26 日
    xmake 解君忧!
    daokedao
        14
    daokedao  
       2025 年 11 月 27 日
    CMake + vcpkg
    dosmlp
        15
    dosmlp  
       2025 年 11 月 27 日
    vcpkg 或者纯源码
    henix
        16
    henix  
       2025 年 11 月 27 日
    如果给公司写那就用业界标准 cmake 。说个我自己的邪修方案:MSVC 就写个 bash 脚本下载依赖、编译,且全静态链接(系统 C 库动态链接)。Linux gcc 直接用系统包管理如 apt 且全动态链接。
    其实 C/C++ 依赖也可以说很简单,全用系统包管理器 + pkg-config 生成编译器选项就行,这就要求你在 Windows 上使用 msys2 + gcc
    labubu
        17
    labubu  
       2025 年 11 月 27 日
    自己用 vcpkg
    kero991
        18
    kero991  
       2025 年 11 月 28 日 via Android
    其实 c++最大的问题是必须编译,vcpkg 也是要编译的,因为在 Linux ,基础库是不通用且不向后兼容的,要保证本机能用一般都得本机编译。包版本工具只是省去了手动编译而已。可不像 Java 等有预编译包
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2835 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 47ms UTC 13:57 PVG 21:57 LAX 05:57 JFK 08:57
    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