HarmonyOS 鸿蒙Next中C标准太低,怎么修改C++的版本
HarmonyOS 鸿蒙Next中C标准太低,怎么修改C++的版本 C标准太低,怎么修改C++的版本
目前支持的C++的版本有哪些
一、核心问题与解答
1. 目前支持的 C++ 版本
- 完全支持:C++11、C++14 标准;
- 部分支持:C++17、C++20 标准(处于逐步完善阶段);
- 默认版本:SDK 默认使用 C++14 标准。
2. C++ 版本修改方法(2 种具体方案)
方案 1:修改 CMakeLists.txt 文件
在文件中添加指定 C++ 标准的代码,示例如下(以设置为 C++17 为例):
set(NATIVERENDER_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR})
# 添加以下行设置C++标准
set(CMAKE_CXX_STANDARD 17)
方案 2:修改模块级 build-profile.json5 文件
在buildOption的externalNativeOptions中添加cppFlags配置,示例如下(以设置为 C++17 为例):
"buildOption": {
"externalNativeOptions": {
"path": "./src/main/cpp/CMakeLists.txt",
"arguments": "",
// 新增/修改该行设置C++标准
"cppFlags": "--std=c++17"
},
},
3. 注意事项
- 若将版本设置为 C++17/C++20,但使用了该版本暂不支持的特性,会导致编译失败;
- 具体 C++ 语言特性支持详情,可参考llvm libcxx 官网对应的 Release Notes。
4. 额外建议
若对 C++17/C++20 高版本及新特性有强依赖,可考虑使用 zig 工具,参考链接:掘金相关文章。
【解决方案】
目前C++11和C++14标准已完全支持,C++17和C++20标准正在逐步完善。SDK默认的C++版本为14。可参考如何修改代码工程所支持的C++语言版,如果需要修改,请参考以下两种方式:
- 在CMakelists.txt文件中设置版本。
set(NATIVERENDER_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR})
# 添加以下行
set(CMAKE_CXX_STANDARD 17)# 设置C++标准为17
- 修改模块级的build-profile.json5文件,添加““cppFlags”: “–std=c++17””。
"buildOption": {
"externalNativeOptions": {
"path": "./src/main/cpp/CMakeLists.txt",
"arguments": "",
// Modify the following line
"cppFlags": "--std=c++17"
},
},
找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17
如果对C++高版本和新特性有强依赖(C++17/20)可以考虑zig。https://juejin.cn/post/7556522678288515108
在HarmonyOS鸿蒙Next中,C++版本由构建配置决定。修改方法:在工程的build-profile.json5或模块级build-profile.json5中,通过externalNativeOptions配置cppFlags参数,添加-std=c++11/14/17/20等标准指定参数。例如:"externalNativeOptions": {"cppFlags": "-std=c++17"}。需确保NDK工具链支持所选标准。
在HarmonyOS Next中,C++标准版本由构建工具链和NDK配置决定。当前HarmonyOS NDK通常支持C++14、C++17标准,部分版本可能支持C++20特性。
修改方法:
- 在模块级build-profile.json5中配置:
"externalNativeOptions": {
"cppFlags": "-std=c++17"
}
- 或在CMakeLists.txt中设置:
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
支持的C++标准版本取决于具体NDK版本,建议查阅对应版本的HarmonyOS NDK文档获取准确信息。构建时可通过编译参数-std=c++14/-std=c++17等指定所需标准。


