4

基本的に、Android.mkファイルでやりたいことは次のとおりです。

LOCAL_MODULE := foo
$(LOCAL_MODULE): pre-build
pre-build:
    @echo HI
.PHONY: pre-build
# ...
include $(BUILD_SHARED_LIBRARY)

ndk-buildシステムはに対して機能しndk-build foo、ビルド前の手順は機能しますが、アプリケーションでこのライブラリを使用する場合、ビルド前の手順は実行されません。

LOCAL_EXPORT_C_INCLUDES特に、ライブラリを使用するモジュールがヘッダーファイルを楽しむことができるように、使用されるパスに配置されるヘッダーファイル(バージョン/日付スタンプなどを含む)を生成しようとしています。

4

2 に答える 2

2

ちょっとしたハックとして、これが私がやったことです。

ビルド後のステップはかなり簡単に追加できるようですが、ビルド前のステップは追加できません。

ビルド プロセスの後、常に実行されるポストビルド プロセスとなるinclude依存関係を追加できます。$(LOCAL_BUILT_MODULE)

include $(BUILD_SHARED_LIBRARY)
$(LOCAL_BUILT_MODULE): post_build

post_build:
    $echo Hi, I'm post-build.

たとえば、$(LOCAL_PATH) にあるものを派手に使用する必要がある場合は、

include $(BUILD_SHARED_LIBRARY)
$(LOCAL_BUILT_MODULE): post_build

define gen_post_build
post_build:
    $(hide) python $(1)/MyScript.py 
endef

$(eval $(call gen_post_build,$(LOCAL_PATH)))
于 2013-03-26T15:20:34.483 に答える
1

1 つまたは複数のアーキテクチャ (ABI) 用の動的ライブラリをビルドするときに、ビルド前の手順を実行する方法を次に示します。これは、すべての状況で機能するとは限りません。

次のように Application.mk ファイルを作成します (まだ作成していない場合)。

all: pre_build
pre_build:
    echo "This is the pre-build"

上記のように「all」を使用すると、最終的に Application.mk でプレビルドが実行され、Android.mk でポストビルドが実行されることに注意してください。

于 2016-07-12T02:03:06.610 に答える