# HarmonyOS toolchain configuration for CMake
# This file helps CMake recognize HarmonyOS as a valid system
# Since CMake doesn't recognize HarmonyOS natively, we treat it as Linux
# but add HarmonyOS-specific configurations
# set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_NAME HarmonyOS)
set(CMAKE_SYSTEM_VERSION 1.11.0)
set(CMAKE_SYSTEM_PROCESSOR aarch64)
# Define HARMONYOS macro for source code
add_definitions(-DHARMONYOS=1)
add_definitions(-D__OHOS__=1)
# Compiler paths — 自动检测 HarmonyOS 工具链
# 优先使用环境变量 CC/CXX(可由 build-ohos-with-log.sh 自动设置)
if(DEFINED ENV{CC} AND DEFINED ENV{CXX})
set(CMAKE_C_COMPILER $ENV{CC})
set(CMAKE_CXX_COMPILER $ENV{CXX})
message(STATUS "使用环境变量 CC/CXX: $ENV{CC}")
else()
# 自动检测可用的编译器
# 优先检测 DevBox 路径 (DevEco Studio / HNP)
if(EXISTS /data/service/hnp/bin/clang)
set(CMAKE_C_COMPILER /data/service/hnp/bin/clang)
set(CMAKE_CXX_COMPILER /data/service/hnp/bin/clang++)
message(STATUS "自动检测到 DevBox 工具链: /data/service/hnp/bin/clang")
# 其次检测 CodeArts IDE 路径
elseif(EXISTS /data/app/BiSheng.org/BiSheng_1.0/llvm/bin/clang)
set(CMAKE_C_COMPILER /data/app/BiSheng.org/BiSheng_1.0/llvm/bin/clang)
set(CMAKE_CXX_COMPILER /data/app/BiSheng.org/BiSheng_1.0/llvm/bin/clang++)
message(STATUS "自动检测到 CodeArts 工具链: /data/app/BiSheng.org/BiSheng_1.0/llvm/bin/clang")
else()
message(FATAL_ERROR "\n"
"============================================\n"
"未找到 HarmonyOS 编译器!\n"
"============================================\n"
"\n"
"方式一:CodeArts IDE(当前环境)\n"
" 当前已在 CodeArts 终端中,检查编译器是否安装\n"
" 编译器: /data/app/BiSheng.org/BiSheng_1.0/llvm/bin/clang\n"
"\n"
"方式二:DevBox(应用商店安装)\n"
" 在 HiShell 中执行构建\n"
" 编译器: /data/service/hnp/bin/clang\n"
"\n"
"方式三:设置 CC/CXX 环境变量\n"
" cmake -DCMAKE_C_COMPILER=/path/to/clang ...\n"
"============================================")
endif()
endif()
# System root (if applicable)
# set(CMAKE_SYSROOT /path/to/harmonyos/sysroot)
# Search paths for libraries and headers
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
# Compiler flags for HarmonyOS
# These may need adjustment based on actual system requirements
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
# Define HARMONYOS macro for source code
add_definitions(-DHARMONYOS=1)
# Note: HarmonyOS is treated as a Linux-like system for compatibility
# This allows using existing UNIX/Linux build configurations