HarmonyOS 鸿蒙Next中C标准太低,怎么修改C++的版本

HarmonyOS 鸿蒙Next中C标准太低,怎么修改C++的版本 C标准太低,怎么修改C++的版本

目前支持的C++的版本有哪些

7 回复

C++11、C++14标准已完全支持,C++17和C++20标准的部分特性已支持。开发者可以通过如何修改代码工程所支持的C++语言版本来设置自己开发所需C++标准版本。如果将C++版本设置为C++17或者C++20,但使用了不支持的特性,会导致编译失败。具体语言特性支持标准可以参考https://libcxx.llvm.org/网站对应的Release Notes。

更多关于HarmonyOS 鸿蒙Next中C标准太低,怎么修改C++的版本的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


一、核心问题与解答

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 文件

buildOptionexternalNativeOptions中添加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特性。

修改方法:

  1. 在模块级build-profile.json5中配置:
"externalNativeOptions": {
  "cppFlags": "-std=c++17"
}
  1. 或在CMakeLists.txt中设置:
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

支持的C++标准版本取决于具体NDK版本,建议查阅对应版本的HarmonyOS NDK文档获取准确信息。构建时可通过编译参数-std=c++14/-std=c++17等指定所需标准。

回到顶部