在 Android NDK 中,我构建了由 SWIG 自动生成的 JNI 文件。callmanager_wrap.cpp是共享库的一部分:
LOCAL_SRC_FILES += callmanager_wrap.cpp
include $(BUILD_SHARED_LIBRARY)
但我想callmanager_wrap.cpp
在编译之前附加/编辑。更明确地说:
cat jnistuff.txt >> callmanager_wrap.cpp
我需要添加的内容是事先知道的,但 callmanager_wrap.cpp 不是。它由 SWIG 生成。最终,我的自定义规则必须运行以下命令来生成 callmanager_wrap.cpp:
swig -c++ -java -package com.package.my -o callmanager_wrap.cpp callmanager.i
根据这篇文章,无法将自定义规则添加到Android.mk
. Android.mk
但在 Android 资源中,我相信在 BUILT 或 INSTALLED 之后会有一些处理步骤。我尝试了以下方法:
MY_JNI_WRAP=callmanager_wrap.cpp
include $(CLEAR_VARS)
LOCAL_SRC_FILES += callmanager_wrap.cpp
LOCAL_INTERMEDIATE_TARGETS += myjni
myjni:
echo "in myjni target"
swig -c++ -java -package com.package.my -o $(MY_JNI_WRAP) callmanager.i
cat jnistuff.txt >> $(MY_JNI_WRAP)
include $(BUILD_SHARED_LIBRARY)
但是myjni
永远不会调用目标。
- LOCAL_INTERMEDIATE_TARGETS 是做什么用的?
- 我可以在不编写外部脚本或 makefile 的情况下实现我想要做的事情吗?