V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
huyangq
V2EX  ›  程序员

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

  •  
  •   huyangq · 11 天前 · 1683 次点击

    如题,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  
       11 天前
    windows 下有 vcpkg 管理,linux 下就不知道啦,因为没用 linux 编程.
    xtreme1
        2
    xtreme1  
       11 天前
    Linux 下也有 vcpkg.
    qieqie
        3
    qieqie  
       11 天前
    纯源码依赖的直接 git submodule ,或者直接复制一份
    有二进制的更麻烦一点,还要考虑如何链接,安装 prebuilt 可以用系统的,不太纠结版本的 apt yum brew 安装就好了,或在 cmake 里 FetchContent ,
    最后就是第三方的包管理器,conan vcpkg 啥的
    sagnitude
        4
    sagnitude  
       11 天前
    自己写 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  
       11 天前
    我用 xmake ,还不够就加上 vcpkg 。
    xFrye
        6
    xFrye  
       11 天前
    可以试试 v 友出品的 xmake
    realwxg
        7
    realwxg  
       11 天前
    lixile
        8
    lixile  
       11 天前
    工具有 好用且全面的中心库 无
    自己维护内源 conan 在对应平台 编译(包括编译选项控制和编译调优) 然后上传来使用
    Thymolblue
        9
    Thymolblue  
       11 天前
    尽量使用 CMake 的第三方库,因为 findxxx 会很方便,手搓个脚本来执行这些库的跨平台编译(通常只需要 CMake 预处理和编译这两个步骤)。Windows 上兼容性比较好通常不需要再细分版本重新编译。Linux 平台就用 Dockerfile 之类的起目标平台容器来维护依赖。
    lcsoft
        10
    lcsoft  
       11 天前
    可以试试 xmake
    shylockhg
        11
    shylockhg  
       11 天前
    把所有 lib 放一个 cmake 工程用 external project 管理,编译安装 tar 打包,根据 libc 版本,区分不同 tar 包
    shylockhg
        12
    shylockhg  
       11 天前
    win 和 linux 就继续区分不同 tar 包就行
    wzhy
        13
    wzhy  
       11 天前
    xmake 解君忧!
    daokedao
        14
    daokedao  
       10 天前
    CMake + vcpkg
    dosmlp
        15
    dosmlp  
       10 天前
    vcpkg 或者纯源码
    henix
        16
    henix  
       10 天前
    如果给公司写那就用业界标准 cmake 。说个我自己的邪修方案:MSVC 就写个 bash 脚本下载依赖、编译,且全静态链接(系统 C 库动态链接)。Linux gcc 直接用系统包管理如 apt 且全动态链接。
    其实 C/C++ 依赖也可以说很简单,全用系统包管理器 + pkg-config 生成编译器选项就行,这就要求你在 Windows 上使用 msys2 + gcc
    labubu
        17
    labubu  
       10 天前
    自己用 vcpkg
    kero991
        18
    kero991  
       9 天前 via Android
    其实 c++最大的问题是必须编译,vcpkg 也是要编译的,因为在 Linux ,基础库是不通用且不向后兼容的,要保证本机能用一般都得本机编译。包版本工具只是省去了手动编译而已。可不像 Java 等有预编译包
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   1218 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 17:03 · PVG 01:03 · LAX 09:03 · JFK 12:03
    ♥ Do have faith in what you're doing.