• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# cmake变更说明
2
3## cl.cmake.1 应用编译构建对不支持命令强校验
4
5**变更原因**
6
7cmake从3.16.5版本升级到3.28.2版本,引入了该项变更。
8
9**变更影响**
10
11该变更为不兼容性变更。
12
13变更前:
14
15应用编译构建会忽略不支持的命令参数,功能正常。
16
17变更后:
18
19在开发者使用不支持的命令参数(如 -v)时,应用编译构建将出现失败提示,提示内容如下:
20
21````
22CMake Error: Unknown argument -v
23CMake Error: Run 'cmake --help' for all supported options.
24````
25**变更发生的版本**
26
27从OpenHarmony SDK 5.0.0.33开始。
28
29**适配指导**
30
311、查询支持的命令参数
32
33命令行执行 cmake --help 可以查看支持的命令参数合集
34
35我们也可以在 [cmake.org](https://cmake.org/cmake/help/v3.28/manual/cmake.1.html) 查看 cmake 官方指导文档,Options 详细描述了支持的命令参数合集及其说明
36
372、DevEco Studio构建的项目适配,删除项目模块目录下 build-profile.json5 中 arguments 配置的不支持的参数,删除内容如下:
38
39````
40{
41  "apiType": '',
42  "buildOption": {
43    "externalNativeOptions": {
44      "path": "",
45      "arguments": "-v",   // 删除该项配置中不支持的参数,如删除-v
46      "cppFlags": "",
47    }
48  },
49  ...
50}
51````
52
533、命令行构建的项目适配,删除构建命令中不支持的参数,删除内容如下:
54
55````
56{native所在目录}/build-tools/cmake/bin/cmake
57-HC:{项目所在目录}/entry/src/main/cpp
58-BC:{项目所在目录}/entry/.cxx/default/default/arm64-v8a
59-DOHOS_ARCH=arm64-v8a
60-DCMAKE_LIBRARY_OUTPUT_DIRECTORY={项目所在目录}/entry/build/default/intermediates/cmake/default/obj/arm64-v8a
61-DCMAKE_BUILD_TYPE=Debug
62-DOHOS_SDK_NATIVE={native所在目录}
63-DCMAKE_SYSTEM_NAME=OHOS
64-DCMAKE_OHOS_ARCH_ABI=arm64-v8a
65-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
66-DCMAKE_TOOLCHAIN_FILE={native所在目录}/build/cmake/ohos.toolchain.cmake
67-GNinja
68-DCMAKE_MAKE_PROGRAM={native所在目录}/build-tools/cmake/bin/ninja
69--no-warn-unused-cli
70-v  // 删除执行命令中不支持的参数-v
71````
72
73
74
75## cl.cmake.2 应用编译构建建议cmake_minimum_required修改为不低于3.5.0的版本
76
77**变更原因**
78
79cmake从3.16.5版本升级到3.28.2版本,引入了该项变更。
80
81**变更影响**
82
83该变更为不兼容性变更。
84
85变更前:
86
87开发者使用默认模板(配置为:cmake_minimum_required(VERSION 3.4.1))时,应用编译构建正常
88
89变更后:
90
91开发者使用默认模板(配置为:cmake_minimum_required(VERSION 3.4.1))时,将出现告警提示,提示内容如下:
92
93```
94CMake Deprecation Warning at CMakeLists.txt:2 (CMAKE_MINIMUM_REQUIRED):
95  Compatibility with CMake < 3.5 will be removed from a future version of
96  CMake.
97
98  Update the VERSION argument <min> value or use a ...<max> suffix to tell
99  CMake that the project does not need compatibility with older versions.
100```
101
102**变更发生的版本**
103
104从OpenHarmony SDK 5.0.0.33开始。
105
106**适配指导**
107
108修改项目 CMakeLists.txt 中 cmake_minimum_required 配置,修改内容如下:
109
110````
111# the minimum version of CMake.
112cmake_minimum_required(VERSION 3.4.1)  // 修改为 cmake_minimum_required(VERSION 3.5.0)
113
114project(xxx)
115...
116````
117
118
119
120