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

这是我发现在为一个或多个架构 (ABI) 构建动态库时执行预构建步骤的一种方法。这可能不适用于所有情况。

使用以下内容创建一个 Application.mk 文件(如果您还没有):

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

请注意,使用上面的“全部”最终会在 Application.mk 中进行预构建,并在 Android.mk 中进行后构建。

于 2016-07-12T02:03:06.610 回答