由此看来,C++标准委员会对自己的定位还不如PSF(The Python Software Foundation)呢。人家PSF不光对python语言本身有指导,还能实现一个cpython,还能自带一个强大的标准库。除此之外,人家还建立了一个软件包仓库: pypi·org/ ,拥有庞大的第三方库。人家还有一个文档网站 docs·python·org 及社区。
相比之下,C++标准委员会干了啥?自己就会扒扒故纸堆,动动嘴皮子出标准,剩下的事(compiler、doc、library、社区)全扔给别人干,到现在也没有一个package management system,总体呈现一盘散沙、没人管的状态。就那个C++标准还不是免费提供的吧?
【 在 z16166 的大作中提到: 】
: TL;DR 简要回答:
: 因为 C++ 标准委员会(ISO C++)只制定语言和标准库本身,而不管理生态和工具链。再加上历史包袱、生态碎片、平台多样性等因素,导致 C++ 没有统一的官方包管理器。
: 一、标准委员会的职责决定了它“不管这事”
: ISO C++ 的目标是定义:
: 语法(如模板、范围 for)
: 标准库(如 STL、线程、正则)
: ABI、行为规范(如未定义行为)
: 但它不负责:
: 编译器实现(GCC、Clang、MSVC)
: 构建系统(Make、CMake、Meson)
: 包管理器(vcpkg、conan、hunter)
: 标准委员会不干涉工具生态,这是它一贯的方针。
: —— Herb Sutter(C++ 核心专家)
: 二、历史包袱:C++ 太早出现了
: C++ 诞生于 1980 年代,那时网络尚不普及、没有中央仓库概念。
: 开发者习惯于:
: 手动下载源码
: 写 Makefile 编译
: 把 .h、.cpp 拷贝进项目
: C++ 是一个在 包管理之前就广泛使用 的语言。
: 它的历史比 npm、pip、cargo、go mod 等都早。
: 三、生态高度碎片化
: C++ 在 平台、编译器、构建系统、ABI 等方面都不统一,导致包管理器实现困难:
: 方面 状况
: 编译器 GCC, Clang, MSVC 等 ABI 不兼容
: 构建系统 CMake, Make, MSBuild, Autotools 各自为政
: 平台 Windows、Linux、macOS 差异大
: 包形式 有的只提供源码、有的预编译、有的静态、有的动态
: 一个包可能在 Windows 用 vcpkg,Linux 用 apt,Mac 用 brew,在构建时还得兼容不同编译器。
: 四、社区内缺乏统一意志
: vcpkg(微软)、conan(JFrog)、hunter、Buckaroo、spack、biicode 等工具争相竞争,但没有一个成为真正的共识性标准。
: 这导致开发者和厂商各用各的,你的包我装不了、我的 ABI 你编译不了。
: CMake 虽然几乎成了构建的事实标准,但它本身不是包管理器。
: 五、标准化包管理器的现实障碍
: 若委员会标准化一个包管理器,还要考虑:
: 安全性(依赖信任)
: 后向兼容(老包支持)
: 实现维护(谁维护仓库和服务?)
: 法律合规(哪些国家能访问?)
: 这相当于做一个“开源界的 C++ App Store”,很难落地。
: 六、未来方向?
: 虽然 ISO C++ 不直接管包管理器,但**正在推动模块化(C++20 Modules)**来间接帮助生态改进:
: 模块有助于加快编译、清晰依赖
: 模块可与包管理器(如 vcpkg)结合得更紧密
: 将来可能形成基于模块的生态系统,但还在缓慢推进
--
修改:seablue FROM 111.200.40.*
FROM 111.200.40.*