V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ray1888
V2EX  ›  程序员

c++如何管理管理第三方代码

  •  
  •   ray1888 ·
    ray1888 · 2018-04-25 17:57:27 +08:00 · 3490 次点击
    这是一个创建于 2164 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之后项目可能需要在 Python 下面用 c++写一些库,请问各位 c++大佬,你们都是怎样去管理要用到的第三方代码?(因为之前写的语言都有包管理器这个东西,不太了解)

    8 条回复    2018-04-27 03:01:41 +08:00
    goreliu
        1
    goreliu  
       2018-04-25 18:37:10 +08:00
    如果是用 linux 的话,可以用系统的包管理器来管理依赖,这样是最省事的(比如不用加 -I -L 之类的参数编译)。Windows 的话可能复杂些,如果是 Mingw 系列,可以用 MSYS2,如果是 VS 系列,有多种方法,具体得看用的是什么库。
    changnet
        2
    changnet  
       2018-04-25 18:37:22 +08:00 via Android
    git submodule
    gnaggnoyil
        3
    gnaggnoyil  
       2018-04-25 19:36:30 +08:00
    尽量让目标用户能通过所支持的环境中系统默认的包管理器就能安装上满足要求的依赖.(Windows 下 Visual Studio 有 vcpkg,MinGW 有 MSYS2 的 pacman),如果不能也尽量写清楚要安装满足要求的依赖需要哪些步骤.

    另外如果你的库要跨多个平台的话那么你大概率要处理不同平台之间不同的的依赖配置问题.为了解决这个问题那么你大概率需要 CMake.另外如果 LZ 要写 CPython 扩展的话也要大概了解下 CPython 扩展的文件是如何被组织的.当然,这种组织方式也可以用 CMake 来完成,无论是单独 CMake 还是 CMake+distutils/setuptools.
    congeec
        4
    congeec  
       2018-04-25 22:25:32 +08:00 via iPhone
    其实方案挺多的
    了解下 Conan
    wevsty
        5
    wevsty  
       2018-04-25 22:27:25 +08:00
    Linux 就用系统的包管理就行了。
    Win 那只有自己去整理了。
    lbtinglb
        6
    lbtinglb  
       2018-04-26 02:08:22 +08:00
    c++ under Windows 可以看看微软最近新出的 vcpkg。https://github.com/Microsoft/vcpkg
    MeteorCat
        7
    MeteorCat  
       2018-04-26 13:12:12 +08:00
    cmake
    find_package(XXX require)
    判断没有执行外部 sh 脚本安装部署
    joyee
        8
    joyee  
       2018-04-27 03:01:41 +08:00
    看第三方库的类型,如果是依赖 API/ABI 稳定性有保障安装包也很广泛分布的项目的话,很多都是让用户自行安装依赖,然后用 cmake 之类的工具在系统里找依赖生成 Makefile 动态链接上去的。平台型项目希望自己控制依赖版本的话就直接把依赖的代码放进一个文件夹了,一般自己有脚本用来更新依赖,然后静态链接,但我见过被 Linux 发行版自带包管理器改写成动态链接自己的包给他们的用户的……
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3230 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 11:41 · PVG 19:41 · LAX 04:41 · JFK 07:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.