做C项目的都碰到过移植库的痛苦,不同的编译器、不同的平台下总会一堆报错要调整。库的引用也是无比麻烦,先下载、编译,然后再添加到工程中,编译时还可能会报一堆编译器兼容问题。比如有些代码是linux gcc编译的,想在windows下用于msvc工程里面编译,基本上就不可能直接成功,要改好多地方。这还不说配置IDE和编译环境的蛋疼,编译器、头文件、库文件等,如果需要跨平台还要配置交叉编译器,为了搭建一个环境经常要花1-2天。
记得之前要搞一个冷门的图片转码库,纯C的,官方说明里面windows上用的是mingw编译,可环境怎么配置都编译报错,一直没搞定。最后直接改了好久移植到msvc工程里面编译的。
虽然有vcpkg,conan等包管理平台,但是一些小众的库不收录也很难过,而且毕竟是三方的组件,好要配置环境等一大堆东西。而且vcpkg里面的库好多也是在官方源码里面打了好几个patch才能正常编译生成的,官方还有自行添加库的教程,头大的厉害。
偶尔也会用用python或者golang,抛开py2、3的不兼容的坑,对于三方库引用是方便至极的,而且基本不存在跨平台的问题。
golang编译生成可执行程序的,引用三方库也非常方便,还包括github仓库都可以引用,然后设置一下目标平台就能非常方便的编译跨平台的release,目前就有一个小工具,一份代码,三条编译命令就能生成windows、arm linux、darwin三个平台的bin,当时爽的快翻天了。
话说C/C++都经历过几十年的发展了,为啥就没有一个整合的编译平台,能让引用三方库能像pip install或者go get一样丝滑。。。