这个问题之前应该不少人问过,一些回答大概的意思就是因为不同平台,不能每一个平台编译一份,也不能保证每个都可用,所以都是干脆拉源码下载编译
刚才突然想到,如果平台保存的是中间代码,不保存各个架构最后的编译成品,是不是就能解决?最后一步由拉代码时进行编译?
因为从源码->中间代码生成这部分,都和电脑无关的,不管哪台电脑,应该都是有同样的输出结果,只有到最后一步的汇编才有不同,那么提供中间代码,是不是就是比较好的解决方案?减少了一些相同的构建时间,并且一些依赖什么的应该也在这时变成中间代码,省却了我们导出研究是哪个版本?
![]() |
1
BrettD 83 天前 via iPhone
C++哪有所谓的标准化的中间代码……每个编译器自己实现的都不一样
|
![]() |
2
lcdtyph 83 天前
源码->中间代码的这部分也不是平台无关的:很多跨平台的兼容是利用预处理阶段完成的,这间接导致了编译阶段的源码都是不同的。
|
![]() |
3
wutiantong 83 天前 ![]() 思而不学则。。。
|
![]() |
4
Mohanson 83 天前 via Android
很多 c 库都有手写汇编呢,还有 ifdef win, ifdef apple 条件编译,哪有通用的中间码
|
![]() |
5
Cbdy 83 天前
C 可以嵌入汇编
|
6
renmu123 83 天前 via Android
因为设计得早,没想到这个,之后随着包袱越来越多,也就没人愿意搞了(以上都是我瞎猜的,勿喷
|
7
Mithril 83 天前
主要是细节实在是太多,各家编译器支持的有不一样。然后 UB 又是一大堆,鬼知道放哪就跑不起来了。
一般大公司其实都有自己弄的依赖管理。自己规定好 toolchain 和配置就行,二进制就能直接拉下来用了。 |
8
across 83 天前
以前网络没那么自动化,cmake 用用还可以。
现在 VS 自带的管理就挺方便的···不过 C++下沉到底层了,用户群没那么多,不知道有没人去搞,说不定更愿意投在 rust 上。 |
9
whitehack 83 天前
|
10
longaiwp 83 天前
主要是二进制之间互相不兼容啊,平台相关,你这个不好搞啊。
|
![]() |
11
ResidualSoils 83 天前
vcpkg 好像还不错
|
![]() |
12
ysc3839 83 天前 via Android
本质问题是不同编译器实现不同,能做到同平台相互兼容已经很不错了。如果只限定某个编译器的话,那是没有问题的,比如 NuGet 上就有一些 C/C++ pre-built binary 。
|
![]() |
13
sean10 83 天前 via Android
平台相关的依赖管理用用还是可以的,win 的 nuget,centOS 上的 yum 都能下到依赖,debian 的 deb 包里也带了
|
![]() |
14
sean10 83 天前 via Android
感觉还是历史原因,应该是有做的还可以的了吧?只是相比不知道的人少太多了
|
![]() |
15
zxCoder 82 天前
总结起来应该就是三个字 太乱了
|