V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
wszgrcy
V2EX  ›  问与答

c/c++为什么没有集中的依赖管理?

  •  
  •   wszgrcy · 2020-12-15 17:09:59 +08:00 · 2200 次点击
    这是一个创建于 1472 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这个问题之前应该不少人问过,一些回答大概的意思就是因为不同平台,不能每一个平台编译一份,也不能保证每个都可用,所以都是干脆拉源码下载编译

    刚才突然想到,如果平台保存的是中间代码,不保存各个架构最后的编译成品,是不是就能解决?最后一步由拉代码时进行编译?

    因为从源码->中间代码生成这部分,都和电脑无关的,不管哪台电脑,应该都是有同样的输出结果,只有到最后一步的汇编才有不同,那么提供中间代码,是不是就是比较好的解决方案?减少了一些相同的构建时间,并且一些依赖什么的应该也在这时变成中间代码,省却了我们导出研究是哪个版本?

    15 条回复    2020-12-16 09:17:45 +08:00
    BrettD
        1
    BrettD  
       2020-12-15 17:14:07 +08:00 via iPhone
    C++哪有所谓的标准化的中间代码……每个编译器自己实现的都不一样
    lcdtyph
        2
    lcdtyph  
       2020-12-15 17:16:55 +08:00
    源码->中间代码的这部分也不是平台无关的:很多跨平台的兼容是利用预处理阶段完成的,这间接导致了编译阶段的源码都是不同的。
    wutiantong
        3
    wutiantong  
       2020-12-15 17:19:06 +08:00   ❤️ 2
    思而不学则。。。
    Mohanson
        4
    Mohanson  
       2020-12-15 17:20:04 +08:00 via Android
    很多 c 库都有手写汇编呢,还有 ifdef win, ifdef apple 条件编译,哪有通用的中间码
    Cbdy
        5
    Cbdy  
       2020-12-15 17:20:51 +08:00
    C 可以嵌入汇编
    renmu123
        6
    renmu123  
       2020-12-15 17:27:41 +08:00 via Android
    因为设计得早,没想到这个,之后随着包袱越来越多,也就没人愿意搞了(以上都是我瞎猜的,勿喷
    Mithril
        7
    Mithril  
       2020-12-15 17:31:27 +08:00
    主要是细节实在是太多,各家编译器支持的有不一样。然后 UB 又是一大堆,鬼知道放哪就跑不起来了。
    一般大公司其实都有自己弄的依赖管理。自己规定好 toolchain 和配置就行,二进制就能直接拉下来用了。
    across
        8
    across  
       2020-12-15 17:32:57 +08:00
    以前网络没那么自动化,cmake 用用还可以。
    现在 VS 自带的管理就挺方便的···不过 C++下沉到底层了,用户群没那么多,不知道有没人去搞,说不定更愿意投在 rust 上。
    whitehack
        9
    whitehack  
       2020-12-15 17:44:24 +08:00
    longaiwp
        10
    longaiwp  
       2020-12-15 17:46:41 +08:00
    主要是二进制之间互相不兼容啊,平台相关,你这个不好搞啊。
    ResidualSoils
        11
    ResidualSoils  
       2020-12-15 17:53:14 +08:00
    vcpkg 好像还不错
    ysc3839
        12
    ysc3839  
       2020-12-15 18:00:30 +08:00 via Android
    本质问题是不同编译器实现不同,能做到同平台相互兼容已经很不错了。如果只限定某个编译器的话,那是没有问题的,比如 NuGet 上就有一些 C/C++ pre-built binary 。
    sean10
        13
    sean10  
       2020-12-16 01:42:44 +08:00 via Android
    平台相关的依赖管理用用还是可以的,win 的 nuget,centOS 上的 yum 都能下到依赖,debian 的 deb 包里也带了
    sean10
        14
    sean10  
       2020-12-16 01:43:31 +08:00 via Android
    感觉还是历史原因,应该是有做的还可以的了吧?只是相比不知道的人少太多了
    zxCoder
        15
    zxCoder  
       2020-12-16 09:17:45 +08:00
    总结起来应该就是三个字 太乱了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1174 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 18:22 · PVG 02:22 · LAX 10:22 · JFK 13:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.