0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Andoroid用ライブラリをC++ & CMakeで作る

Last updated at Posted at 2023-04-02

概要

Android用ライブラリをC++とCMakeを使ってビルドする方法を説明します。

ビルド方法

C++ファイルを追加する

ライブラリ用C++コードファイルを追加します。
今回は簡単な加算するだけの関数を追加します。

ndk_library.h
#ifndef NDK_LIB_NDK_LIBRARY_H
#define NDK_LIB_NDK_LIBRARY_H

int ndk_lib_add(int a, int b);

#endif //NDK_LIB_NDK_LIBRARY_H
ndk_library.cpp
#include "ndk_library.h"

int ndk_lib_add(int a, int b)
{
    return a + b;
}

CMakeLists.txtを追加する

CMakeLists.txtを追加します。staticライブラリで作成します。

CMakeLists.txt
cmake_minimum_required(VERSION 3.24)
project(ndk_lib)

set(CMAKE_CXX_STANDARD 17)

add_library(ndk_lib STATIC ndk_library.cpp)

ビルド

buildディレクトリを作成してそこへ移動します。
makefile作成時にAndroid SDKに含まれているcmakeファイルを指定してビルドします。

mkdir build
cd build

ANDROID_NDK_HOME=$HOME/Library/Android/sdk/ndk/23.1.7779620

cmake \
-DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=arm64-v8a \
-DANDROID_PLATFORM=android-24 \
-DANDROID_STL=c++_static \
..

cmake --build .

出力

buildディレクトリ以下にlibndk_lib.aファイルが出力されていると思います。
llvm-objdumpでAndroid用にビルドされているか確認できます。

$ ~/Library/Android/sdk/ndk/23.1.7779620/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump -f libndk_lib.a

libndk_lib.a(ndk_library.cpp.o):	file format elf64-littleaarch64

architecture: aarch64
start address: 0x0000000000000000

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?