HarmonyOS 鸿蒙Next cmake中arm64-v8a armeabi-v7a这层目录的宏定义是什么?
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-v8a
和armeabi-v7a
架构的宏定义如下:
- arm64-v8a:对应的宏定义是
__aarch64__
。 - 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()
通过这种方式,可以根据目标架构在编译时设置不同的宏定义,从而在代码中进行相应的处理。