27 Aug
2025
27 Aug
'25
10:39 a.m.
各位开发者:
根据软件演进规划,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月。
20 Nov
20 Nov
4:52 p.m.
New subject: cmake 4 landing
各位开发者:
根据先前的公告,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月。
22
Age (days ago)
107
Last active (days ago)
1 comments
1 participants
participants (1)
-
Funda Wang