HarmonyOS 鸿蒙Next cmake中arm64-v8a armeabi-v7a这层目录的宏定义是什么?

发布于 1周前 作者 bupafengyu 来自 鸿蒙OS

HarmonyOS 鸿蒙Next cmake中arm64-v8a armeabi-v7a这层目录的宏定义是什么? cmake中arm64-v8a/armeabi-v7a这层目录的宏定义是什么(API9)

3 回复

内容澄清

arm64-v8a及armeabi-v7a目录如下所示:

├─ libs
    ├─ arm64-v8a
        └─ libMyDemo.so
    └─ armeabi-v7a
         └─ libMyDemo.so
└─ src
     └─ main
          └─ cpp
               └─ CMakeLists.txt

访问到目录的宏定义为:${CMAKE_CURRENT_SOURCE_DIR}/…/…/…/libs/${OHOS_ARCH}/xxxx.so

CMAKE_CURRENT_SOURCE_DIR:CMakeList.txt文件所在目录。

OHOS_ARCH:设置应用程序二进制接口ABI,类型为 armeabi-v7a、arm64-v8a,默认值是 arm64-v8a。

示例代码

CMakeLists.txt 中添加链接库

target_link_libraries(entry PUBLIC
    libace_napi.z.so
    libhilog_ndk.z.so
    ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libMyDemo.so
)

更多关于HarmonyOS 鸿蒙Next cmake中arm64-v8a armeabi-v7a这层目录的宏定义是什么?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)Next中,CMake中用于区分arm64-v8aarmeabi-v7a架构的宏定义如下:

  1. arm64-v8a:对应的宏定义是__aarch64__
  2. armeabi-v7a:对应的宏定义是__arm__

这些宏定义可以在CMake脚本中用于条件编译,以针对不同的架构进行特定的代码处理。例如:

if (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
    add_definitions(-DARCH_ARM64)
elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "arm")
    add_definitions(-DARCH_ARM32)
endif()

通过这种方式,可以根据目标架构在编译时设置不同的宏定义,从而在代码中进行相应的处理。

在HarmonyOS鸿蒙Next的CMake中,针对arm64-v8aarmeabi-v7a架构的宏定义通常通过CMAKE_SYSTEM_PROCESSOR变量来识别。你可以使用以下条件判断:

if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
    # arm64-v8a 架构
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7-a")
    # armeabi-v7a 架构
endif()

这样可以针对不同架构进行条件编译或配置。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!