OpenHarmony SDK CMake 版本兼容性问题解决:从 3.0 到 3.10 的升级之路
版本兼容性:随着 CMake 的更新,旧版本的兼容性会被逐步移除。建议项目使用较新的最低版本要求(如 3.10 或更高),以避免未来的兼容性问题。工具链文件路径:使用时,必须指向具体的.cmake文件,而不是目录。如果路径错误,CMake 会明确提示找不到文件。错误排查顺序首先查看错误信息,理解问题的根本原因检查相关配置文件(如 CMakeLists.txt)验证文件路径和文件是否存在逐步修复问题
OpenHarmony SDK CMake 版本兼容性问题解决:从 3.0 到 3.10 的升级之路
问题背景
在使用 OpenHarmony SDK 的 CMake 工具链编译 cJSON 项目时,遇到了 CMake 版本兼容性错误。错误信息提示 CMake 已经移除了对 3.5 以下版本的兼容性支持。
错误信息
执行 CMake 配置命令时,出现了以下错误:
cmake -DCMAKE_TOOLCHAIN_FILE=/Users/jianguo/Desktop/ohosdk/native/build/cmake \
-DCMAKE_INSTALL_PREFIX=/Users/jianguo/OpenHarmonyTpc/cJSON \
-DOHOS_ARCH=arm64-v8a .. -L
错误输出:
CMake Error at CMakeLists.txt:2 (cmake_minimum_required):
Compatibility with CMake < 3.5 has been removed from CMake.
Update the VERSION argument <min> value. Or, use the <min>...<max> syntax
to tell CMake that the project requires at least <min> but has been updated
to work with policies introduced by <max> or earlier.
Or, add -DCMAKE_POLICY_VERSION_MINIMUM=3.5 to try configuring anyway.
问题分析
1. 版本兼容性问题
查看 CMakeLists.txt 文件第 2 行,发现项目要求的最低 CMake 版本是 3.0:
cmake_minimum_required(VERSION 3.0)
但是当前系统安装的 CMake 版本已经移除了对 3.5 以下版本的兼容性支持,因此需要更新最低版本要求。
2. 工具链文件路径问题
在解决版本问题后,还遇到了工具链文件路径错误:
CMake Error: Could not find toolchain file:
/Users/jianguo/Desktop/ohosdk/native/build/cmake
这是因为工具链文件路径指向了目录而不是具体的 .cmake 文件。
解决步骤
步骤 1:更新 CMake 最低版本要求
将 CMakeLists.txt 中的最低版本要求从 3.0 更新为 3.5:
# 修改前
cmake_minimum_required(VERSION 3.0)
# 修改后
cmake_minimum_required(VERSION 3.5)
步骤 2:进一步优化版本要求
虽然 3.5 版本可以解决错误,但 CMake 会发出警告,建议使用 3.10 或更高版本以避免未来的兼容性问题:
# 最终版本
cmake_minimum_required(VERSION 3.10)
步骤 3:修正工具链文件路径
检查工具链目录内容:
ls -la /Users/jianguo/Desktop/ohosdk/native/build/cmake
发现目录中包含以下文件:
ohos.toolchain.cmake- OpenHarmony 工具链文件sdk_native_platforms.cmake- SDK 平台配置文件
将 CMake 命令中的工具链路径从目录改为具体文件:
# 修改前
-DCMAKE_TOOLCHAIN_FILE=/Users/jianguo/Desktop/ohosdk/native/build/cmake
# 修改后
-DCMAKE_TOOLCHAIN_FILE=/Users/jianguo/Desktop/ohosdk/native/build/cmake/ohos.toolchain.cmake
步骤 4:验证配置成功
重新运行 CMake 配置命令:
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=/Users/jianguo/Desktop/ohosdk/native/build/cmake/ohos.toolchain.cmake \
-DCMAKE_INSTALL_PREFIX=/Users/jianguo/OpenHarmonyTpc/cJSON \
-DOHOS_ARCH=arm64-v8a .. -L
配置成功,输出显示:
-- Configuring done (3.1s)
-- Generating done (0.0s)
-- Build files have been written to: /Users/jianguo/OpenHarmonyTpc/cJSON/build
验证 Makefile 已生成:
ls -la Makefile
最终解决方案总结
修改的文件
CMakeLists.txt - 第 2 行:
cmake_minimum_required(VERSION 3.10)
正确的 CMake 命令
cmake -DCMAKE_TOOLCHAIN_FILE=/Users/jianguo/Desktop/ohosdk/native/build/cmake/ohos.toolchain.cmake \
-DCMAKE_INSTALL_PREFIX=/Users/jianguo/OpenHarmonyTpc/cJSON \
-DOHOS_ARCH=arm64-v8a .. -L
经验总结
-
版本兼容性:随着 CMake 的更新,旧版本的兼容性会被逐步移除。建议项目使用较新的最低版本要求(如 3.10 或更高),以避免未来的兼容性问题。
-
工具链文件路径:使用
CMAKE_TOOLCHAIN_FILE时,必须指向具体的.cmake文件,而不是目录。如果路径错误,CMake 会明确提示找不到文件。 -
错误排查顺序:
- 首先查看错误信息,理解问题的根本原因
- 检查相关配置文件(如 CMakeLists.txt)
- 验证文件路径和文件是否存在
- 逐步修复问题并验证
-
OpenHarmony SDK 工具链:使用 OpenHarmony SDK 的 CMake 工具链时,确保:
- SDK 路径正确
- 使用正确的工具链文件(通常是
ohos.toolchain.cmake) - 设置正确的架构参数(如
OHOS_ARCH=arm64-v8a)
后续操作
配置成功后,可以正常使用 Make 进行编译:
make # 编译项目
make install # 安装到指定目录
参考资料
环境:macOS, CMake 3.x, OpenHarmony SDK
更多推荐


所有评论(0)