各位开发者: 根据先前的公告,master 分支的 cmake 已经升级到 4.2,即将在本周末(2025年11月23日)重构时生效。主要变化如下(与 Fedora 45 技术规范一致): 1. 抛弃与 cmake < 3.5 的兼容性。如果软件在撰写 CMakeLists.txt 中依赖较低版本的 cmake,如: cmake_minimum_required(VERSION 2.8.12) 则将在 cmake 配置阶段报错。请修改源代码中有关段落,依赖3.5或更高版本的 cmake。部分包已经提供了有关 PR,maintainer 请尽快检视后合入。 2. %cmake 宏不再提供 LIB_INSTALL_DIR 和 LIB_SUFFIX 等非标准文件夹变量 请使用 GNUInstallDirs 模块提供的变量来指代安装过程中需要用到的目标文件夹。 3. 默认的生成器切换为 Ninja,即不再生成 GNU Makefile。使用 %cmake 宏之后,默认无法使用 %make_build 或 %make_install 宏完成后续构建和安装操作,请使用 %cmake_build 和 %cmake_install 完成相应的功能。 如果软件自身无法迁移到支持 Ninja 的构建描述文件,必须使用 GNU make 完成构建的话,请在 spec 中重新定义 %_cmake_generator 宏,修改为: %global _cmake_generator "Unix Makefiles" 但也请使用 %cmake_build %cmake_install 完成后续构建和安装操作。 在 2025-08-27 10:39:47,"Funda Wang" <fundawang@yeah.net> 写道: 各位开发者: 根据软件演进规划,openEuler 于2026年的第一个创新版本中,cmake 将升级到 4。相较于当前已经使用多年的 cmake 3 来说,该版本即将产生如下变化: 1. 抛弃与 cmake < 3.5 的策略兼容性 如果你的CMakeLists.txt中声明了如下版本依赖: cmake_minimum_required(VERSION 2.8.12) 使用 cmake 4 构建时将报错。 2. %cmake 宏不再提供 LIB_INSTALL_DIR 和 LIB_SUFFIX 等构建变量 请不要在 CMakeLists.txt 中依赖这些变量来取得 lib64 或 /usr/lib64 这样的文件路径。而应该使用 cmake 自带模块 GNUInstallDirs 中的 CMAKE_INSTALL_LIBDIR 等变量来指代共享库路径。 有关补丁可参见 [1] 由于 openEuler 1.0 时携带的是 cmake 3.12,以上适应性修改并不影响与 openEuler 较早 LTS 各分支内的构建兼容性,补丁可同时适用于较早分支。但由于 openEuler 25.03 起 %cmake 系列宏产生了重大变化,有向后移植需求的开发者应该谨慎处理。 基于 openEuler 25.09 everything 的 cmake 4.1 测试工程[2]中,构建失败的包于此 issue 记录[3]。开发者请在 master 分支中尽早处理涉及的 issue 及 PR。cmake 4 的升级上线节点视乎 cmake 4.2 上游发布时间而定,但不晚于2025年12月。 [1]: https://gitee.com/src-openeuler/qhull/pulls/16 [2]: https://eulermaker.compass-ci.openeuler.openatom.cn/project/overview?osProje... [3]: https://gitee.com/src-openeuler/cmake/issues/IBPYOG