百科问答小站 logo
百科问答小站 font logo



C++为何没有一个简便的调库方法? 第1页

  

user avatar   pansz 网友的相关建议: 
      

python, js, java 等包大多可以二进制跨平台,而且可以跨编译器使用。所以大家会倾向于把包全都集中起来。

C++的包通常只能源码级跨平台。即便你不要求跨平台,C++的二进制包也是无法在同一个平台下跨编译器使用的。一个为vc编译器做的二进制包,不但不能跨平台到linux,甚至在同样的win平台下也不能给gcc clang 等编译器使用。这样的话,C++包管理体系注定需要各自为政。

另外一点,就是C++的模块化在C++20才提出,要想拥有真正好用的包管理系统,个人认为,首先这个语言得实现有效的模块化。至于C++20提出的C++模块化到哪一年能够真正实现并且普及,那就是现在无法预期的事了。


至于手动编写构建文件,本质上就是上边一些问题的后果,C++二进制包无法提供跨操作系统兼容,甚至无法提供同操作系统内的跨编译器兼容。所以C++库只能提供源代码包,而提供源代码就会存在「这份源码在不同编译器中有不同编译方式」的问题,而这个问题目前的标准答案就是:CMake。

C++在不失去兼容的前提下实现一份更易用更通用的包管理系统,在当前框架下是很难的,可能只有等时间推移来实现了吧,毕竟有很多人确实是在向这个方向努力。




  

相关话题

  C++ 类当中为什么要有private? 
  有哪些关于C++高性能服务器开发的高质量博客? 
  c/c++语言中,如果不把声明和实现分开,而是直接一起写到头文件中,会有什么不好的影响? 
  如何在一个月内提高 C++ 水平? 
  LeetCode上 C++ 官方题解为什么有很多没有写delete,不会内存泄漏么?面试时也可以么? 
  虚函数一定是运行期才绑定么? 
  c++ 标准库有哪些api接口设计的不好用? 
  代码全是调包的,怎么申请专利? 
  为什么世界上大多数地方的人习惯用逗号表示小数点,而C++却用圆点表示小数点,而不是按照大多数地方习惯? 
  Borland 是间什么样的公司 他给我们留下了什么文化遗产? 

前一个讨论
游戏成瘾该怎么放弃玩游戏?
下一个讨论
中国古代三大仁君就是汉文帝、宋仁宗、明孝宗,有没有实际超越他们却没能上仁君榜的帝王?





© 2025-05-07 - tinynew.org. All Rights Reserved.
© 2025-05-07 - tinynew.org. 保留所有权利