私はcmakeベースのビルドスクリプトでクロスプラットフォームのライブラリを持っています。 Android用のcmakeのサポートが今から利用可能になっているので(https://developer.android.com/studio/projects/add-native-code.html)、ndk-buildメイクファイルをごみ箱に移動する予定です。
私はfind_package(ZLIB REQUIRED)
をテストしました。zlibヘッダーとライブラリ自体はNDKのsysroot内のすべてのABIで使用できるため、正常に動作しています。 だから、私は味ごとにcmakeのCMDLINEにカスタム引数を追加したり、タイプを構築することができます。ABIごとにcmake引数をgradleで設定することはできますか?
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
externalNativeBuild {
cmake {
arguments "-DMYLIB_ENABLE_PROGUARD=ON"
}
}
}
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
externalNativeBuild {
cmake {
arguments "-DMYLIB_ENABLE_PROGUARD=OFF"
}
}
}
}
私の問題はFindPackageを介して外部の静的/共有ライブラリを見つけるために、ABIあたりCMAKE_PREFIX_PATH
を設定する機能です。
一般的に、私はcmakeのスクリプト自体に${ANDROID_ABI}
と一緒にfind_library
とinclude_directories
を使用することができますが、私はすでに、複数のプラットフォームのサポートとスクリプトの作業持っているきれいな方法があるので、私は、汚いコードを追加するwan'tはありません(find_package + CMAKE_PREFIX_PATH)。
ありがとうございました!
はどうもありがとうございました! – vollmond
問題追跡ツールには、全体的な回避策が記載されています。しかし、回避策は何ですか? –
私はそれがそれぞれのabiのために異なった設定をすることだったと思います。例えば、debugx86 {ndk {abiFilters "x86"}}など、ABIごとに1つ –