如何检查make文件中是否已定义库

时间:2019-07-13 13:26:53

标签: android android-ndk ndk-build

有什么方法可以检查是否已定义库,然后再次跳过定义。

我有一些Android make文件,其库定义如下:

include $(CLEAR_VARS)
LOCAL_MODULE := foo
LOCAL_SRC_FILES := libfoo.so
include $(PREBUILT_SHARED_LIBRARY)

还有另一个包含所有其他小型库的Android.mk,目的是同时自动构建多个项目。

但是问题在于它会抛出错误,因为某些库已经在另一个Android.mk文件中定义了,所以有什么方法可以检查是否定义了库,然后无需再次定义它?

1 个答案:

答案 0 :(得分:0)

在NDK构建中没有任何东西可以可靠地做到这一点(不幸的是,ndk-build本身可以进行检查,但是不幸的是,它的实现方式是实现细节而不是API)。

一个选择是自己设置一个变量,本质上就像使用C include防护一样,即

ifdef foo_defined
foo_defined := true

include $(CLEAR_VARS)
LOCAL_MODULE := foo
LOCAL_SRC_FILES := libfoo.so
include $(PREBUILT_SHARED_LIBRARY)

endif

从事情的声音来看,似乎可以通过重构构建脚本来更好地为您服务,这样您就不必最终定义两次?不确定这对您有多可行。您可能对https://developer.android.com/ndk/guides/android_mk#import-module感兴趣(我将继续为该功能获取一些更好的文档,因为它基本上是闻所未闻的。)