【问题标题】:How to check if a library already defined in make file如何检查make文件中是否已经定义了一个库
【发布时间】:2019-07-13 13:26:53
【问题描述】:

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

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

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

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

但是这个问题会报错,因为有些库已经在另一个Android.mk文件中定义了,有没有办法检查库是否已经定义,然后就不需要再定义了?

【问题讨论】:

    标签: android android-ndk ndk-build


    【解决方案1】:

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

    一种选择是自己设置一个变量,基本上就像你对 C 包含保护所做的那样,即

    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 感兴趣(我将努力为该功能获取一些更好的文档,因为它基本上是闻所未闻的)。

    【讨论】:

      猜你喜欢
      • 2011-07-06
      • 2012-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 2021-07-17
      • 2012-08-30
      相关资源
      最近更新 更多