1. 营销策划师首页

开源社区某个只限于吐槽各种大名鼎鼎的跨平台C++库,根本不兼容*nix以外

开源社区某个只限于吐槽各种大名鼎鼎的跨平台C++库,根本不兼容*nix以外开发windows应用,使用跨平台库,有几个人敢说自己没装过mingw和cygwin?或者说,它们只有代码跨平台,然而光有代码没有make工程咋用?并不是你能在windows上跑,就叫跨平台,就叫兼容windows的。这都叫跨平台,是个项目都能跨平台了。

在某个语言问题里有感而发,看人家用跨平台语言调个native库都千辛万苦,忍不住吐槽了一把所谓的“跨平台”。

然而内容和问题本身离题万里,还容易被读者觉得aoe了别的语言,所以还是单独拉出来说吧。

本文只限于吐槽各种大名鼎鼎的跨平台C++库,别的“跨平台”语言如果在思路上撞车了,也别对号入座哈,有则改之无则加勉。

开源社区所谓的跨平台,大多什么都没跨,只是gcc compatible罢了。

linux下用gcc写,把操作系统API用条件编译封装下,windows下让开发者自己折腾mingw + cygwin,美其名曰跨平台。

对了,这些项目里许多甚至都用不到系统api,条件编译都省了。

什么?msvc?那是什么?能吃吗?

开源社区_nodejs 开源社区_阿里巴巴开源社区

开发windows应用,使用跨平台库,有几个人敢说自己没装过mingw和cygwin?说到底还是用windows模拟linux环境做交叉编译开源社区,这也配叫跨平台?

或者说,它们只有代码跨平台,然而光有代码没有make工程咋用?然而睾贵的开源者们只会有用最原始(好吧是最底层)的手写makefile,根本不兼容*nix以外的平台。

看看Qt,再看看其它大名鼎鼎的开源项目,你们也配叫跨平台?

或许,我是被Qt惯坏了?

并不是你能在windows上跑,就叫跨平台,就叫兼容windows的。

msvc是windows的native编译器,有大量平台专属的技术成果是基于这个编译器做的,如果你连msvc都不能原生支持,还得让使用者自己动手通过一堆办法来wrap,甚至如许多开源项目那样,不挂cygwin,哪怕你用mingw都根本别想编译过,这也好意思叫跨平台?

跨平台结果不兼容native技术,与残废何异?

阿里巴巴开源社区_nodejs 开源社区_开源社区

这都叫跨平台开源社区,是个项目都能跨平台了。

利益相关:因工作需求要写跨平台软件,被开源界诸多“跨平台”项目恶心到了,哪怕我统一用gcc/mingw都不行,还得逼着我上cygwin,说白了还是只支持linux+gcc罢了。

什么才能叫跨平台?

你要说二进制跨平台,那就是开箱即用,不管啥系统装上就能跑,不要还折腾一堆依赖包(看看人家go)。

你要说你的类库跨平台,那也是开箱即用,不管macos/android/linux/win还是clang/gcc/msvc,总之你宣称支持的平台,clone下来用那个平台的编译器直接编译链接,可以和native项目直接对接就行,这才叫跨平台。

让开发者帮你擦屁股,也好意思叫跨平台?

PS:你们见过makefile里根本没跑makefile该做的事,而是全程调用shell脚本,然后再用17000行的脚本自己写了一套make系统吗?都快追上那个项目的一个子模块了。

开源社区_nodejs 开源社区_阿里巴巴开源社区

我就见过,还是某个大名鼎鼎的开源库。

而且这个shell脚本表面上写了windows分支,实际readme直接要求跑cygwin。好吧至少你做了兼容性考虑是吧——然而在cygwin里还有几行错误,直接跑还跑不过哦。

换git bash、mingw console、wsl,都跑不过哦。

点名就不用点了,凡是在windows上写应用的同行,这种血泪史一数一大把。

问我为啥不按开源精神fork然后提pr?

我把他辛辛苦苦写的17000行脚本删了,改成正统的make工具,你觉得人家会接受这个merge么?

人家愿意接受的话,一开始就老老实实写cmake了,人家显然是自己造轮子造高潮了。

发表评论

邮箱地址不会被公开。 必填项已用*标注

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息