OpenHarmony向けCMakeベースのサードパーティライブラリ移植手法

概要

本ガイドでは、OpenHarmonyプラットフォームにCMakeで構成されたサードパーティライブラリを移植する手順を説明します。Hi3516DV300およびHi3518EV300プラットフォームを対象とし、ツールチェーン設定とOpenHarmonyビルドシステムへの統合方法を詳細に解説します。

CMakeライブラリの移植手順

ソース取得

移植対象ライブラリ(例: libconv)のソース構造は以下の通りです:

  • libconv/cmake/ : CMake構成テンプレート
  • libconv/src/ : ソースコードディレクトリ
  • libconv/CMakeLists.txt : ルート構成ファイル
  • libconv/test/ : テストケース

クロスコンパイル設定

ツールチェーンの設定

ライブラリのルートCMakeLists.txtに以下の設定を追加します:

set(CMAKE_CROSSCOMPILING TRUE)
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_C_COMPILER clang)
set(CMAKE_C_FLAGS "--target=arm-liteos -march=armv7-a -mfloat-abi=softfp -mcpu=cortex-a7")
set(CMAKE_CXX_COMPILER clang++)
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}")
set(CMAKE_LINKER clang)
set(CMAKE_SYSROOT ${OHOS_SYSROOT_DIR})

ビルド実行

ソースディレクトリで以下のコマンドを実行します:

mkdir build && cd build
cmake .. -DBUILD_TESTING=ON -DOHOS_SYSROOT_DIR=/absolute/path/to/sysroot
make -j

ビルド後、liblibconv.aとテスト実行ファイルが生成されます。

テスト方法

テスト実行は以下の手順で行います:

  1. OpenHarmony開発ボードでNFSをマウント
  2. テスト実行ファイルをNFSディレクトリに配置
  3. テスト一覧表示: ./cctest --list
  4. 特定テスト実行: ./cctest test-bignum

OpenHarmonyビルドシステムへの統合

ライブラリ配置

ライブラリを以下の構造でOpenHarmonyのthird_partyディレクトリに配置します:

third_party/libconv/
├── BUILD.gn
├── build_thirdparty.py
├── config.gni
└── libconv/

GN構成ファイル

BUILD.gnの内容は以下の通りです:

import("config.gni")
group("libconv") {
  if (ohos_enable_libconv) {
    deps = [":build"]
  }
}
action("build") {
  script = "//third_party/libconv/build_thirdparty.py"
  outputs = ["$root_out_dir/libconv_build.log"]
  command = "cd $BUILD_PATH && cmake .. $CMAKE_OPTIONS && make -j"
  args = [
    "--path=$BUILD_PATH",
    "--command=${command}"
  ]
}

コンフィグレーション

config.gniでコンパイルオプションを設定します:

CMAKE_OPTIONS = "-DBUILD_TESTING=ON -DCMAKE_CXX_STANDARD=11"
if (ohos_build_compiler == "clang") {
  CMAKE_OPTIONS += " -DOHOS_SYSROOT_DIR=${OHOS_SYSROOT_DIR}"
}

ビルド実行

特定ライブラリのビルドは以下のコマンドで行います:

hb build -T //third_party/libconv:libconv

タグ: OpenHarmony CMake cross-compilation GN-build-system armv7-a

6月1日 21:38 投稿