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

2020-12-15 17:09:59 +08:00
 wszgrcy

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

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

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

1995 次点击
所在节点    问与答
15 条回复
BrettD
2020-12-15 17:14:07 +08:00
C++哪有所谓的标准化的中间代码……每个编译器自己实现的都不一样
lcdtyph
2020-12-15 17:16:55 +08:00
源码->中间代码的这部分也不是平台无关的:很多跨平台的兼容是利用预处理阶段完成的,这间接导致了编译阶段的源码都是不同的。
wutiantong
2020-12-15 17:19:06 +08:00
思而不学则。。。
Mohanson
2020-12-15 17:20:04 +08:00
很多 c 库都有手写汇编呢,还有 ifdef win, ifdef apple 条件编译,哪有通用的中间码
Cbdy
2020-12-15 17:20:51 +08:00
C 可以嵌入汇编
renmu123
2020-12-15 17:27:41 +08:00
因为设计得早,没想到这个,之后随着包袱越来越多,也就没人愿意搞了(以上都是我瞎猜的,勿喷
Mithril
2020-12-15 17:31:27 +08:00
主要是细节实在是太多,各家编译器支持的有不一样。然后 UB 又是一大堆,鬼知道放哪就跑不起来了。
一般大公司其实都有自己弄的依赖管理。自己规定好 toolchain 和配置就行,二进制就能直接拉下来用了。
across
2020-12-15 17:32:57 +08:00
以前网络没那么自动化,cmake 用用还可以。
现在 VS 自带的管理就挺方便的···不过 C++下沉到底层了,用户群没那么多,不知道有没人去搞,说不定更愿意投在 rust 上。
whitehack
2020-12-15 17:44:24 +08:00
longaiwp
2020-12-15 17:46:41 +08:00
主要是二进制之间互相不兼容啊,平台相关,你这个不好搞啊。
ResidualSoils
2020-12-15 17:53:14 +08:00
vcpkg 好像还不错
ysc3839
2020-12-15 18:00:30 +08:00
本质问题是不同编译器实现不同,能做到同平台相互兼容已经很不错了。如果只限定某个编译器的话,那是没有问题的,比如 NuGet 上就有一些 C/C++ pre-built binary 。
sean10
2020-12-16 01:42:44 +08:00
平台相关的依赖管理用用还是可以的,win 的 nuget,centOS 上的 yum 都能下到依赖,debian 的 deb 包里也带了
sean10
2020-12-16 01:43:31 +08:00
感觉还是历史原因,应该是有做的还可以的了吧?只是相比不知道的人少太多了
zxCoder
2020-12-16 09:17:45 +08:00
总结起来应该就是三个字 太乱了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/735730

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX