2018/05/13

[android][ndk]MbedTLSをビルドしてみよう (3)

Android Libraryとして、既にあるCMakeLists.txtを取り込み、static libraryを作ってみる方法は分かったと思う。
まあ、単純なCファイル1つだけだったので、CMakeLists.txtもシンプルだったから問題が出なかったのだろう。

本題であるMbedTLSを取り込んだら失敗するんじゃないかと思うが、MbedTLSはAndroid OSでも動くと書いているので、案外とあっさり動くのかもしれない。

さあ、どちらだ?


はい、前者でしたー。

前回と同じようにcppディレクトリを作って、今回はその中にMbedTLSをcloneしたファイルを置き、ディレクトリの直下にあるCMakeLists.txtを「Link C++ Project with Gradle」で取り込んでみたのだが、その時点でエラーが発生した。

まあ、そうよね。。。

Android Studioに出ているログを見ると、testsあたりで失敗しているようだ。
うん、Arm用にビルドしたものは、たぶんテストできないだろうねぇ。


MbedTLSでライブラリを作るときにはlibraryディレクトリの中しか使わないので、そこにあるCMakeLists.txtを使ってみたがエラーになった。
こっちは、cmake_minimum_requiredがないとか。
では、オプションでMbedTLSをcloneした直下にあるCMakeLists.txtを制御するか、自分でCMakeLists.txtを作ってlibrary/CMakeLists.txtを呼び出すかがよいだろう。


うーん・・・・。
testsを呼び出さないようにするためのオプションは、"MSVC"らしい。
MSVCじゃないのに"MSVC"をセットするのはいやだから、後者にするか。


そう書いて、あれこれ試しながら数時間・・・。
ぜんぜんうまくいかない・・・。

L.138でエラーが出るのだが、私としてはそのルート自体を通さないつもりでいるのだ。
L.125のif文がfalseになるように、呼び出し元のCMakeLists.txtで「set(USE_STATIC_MBEDTLS_LIBRARY OFF)」としているのだが、効果があるようには見えない。


やはり、適当な解釈ではダメなのか。


少し、CMakeLists.txtのことを調べた。

「"MSVC"をセットしないと」と思っていたが、optionという項目はデフォルト値を決めているようだ。
setで設定すれば、そちらが上書きされるようである。

まあ、そう思ったからsetを使ってみたのだが、どうにもダメっぽい。
testsを通る箇所を全部コメントアウトすればライブラリができているから、そこだけのようだ。

今日はここまで。
github

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。