2016-10-21 25 views
0

我正在使用ndk-build构建库的bucnh。在某些时候,一个MK文件可能被包含两次,因为它进口的第三方库,我保护的双进口使用全局变量:Android makefiles:如何“提前回归”?

# Importing nlopt! 
# Prevent warnings reporting module was imported twice: 
ifneq ($(imported_nlopt_$(TARGET_ARCH_ABI)),true) 
    imported_nlopt_$(TARGET_ARCH_ABI) := true 
    ifeq ($(APP_OPTIM),debug) 
     # Importing static library nlopt_debug: 
      include $(CLEAR_VARS) 
      LOCAL_MODULE := nlopt_debug 
      LOCAL_SRC_FILES := nlopt/nlopt-2.4.2/lib/$(PLATFORM)/$(COMPILER)/Debug/$(LIB_PREFIX)nlopt$(DEBUG_INFIX)$(DYNAMIC_LINK_EXT) 
      include $(PREBUILT_SHARED_LIBRARY) 
    else 
     # Importing static library nlopt_release: 
      include $(CLEAR_VARS) 
      LOCAL_MODULE := nlopt_release 
      LOCAL_SRC_FILES := nlopt/nlopt-2.4.2/lib/$(PLATFORM)/$(COMPILER)/Release/$(LIB_PREFIX)nlopt$(DYNAMIC_LINK_EXT) 
      include $(PREBUILT_SHARED_LIBRARY) 
    endif 
else 
    $(info "NLOPT already imported!") 
endif 

我需要做到这一点在许多地方,它开始是烦人我整个文件在if声明中。

makefile中支持“早期回报”吗?我可以做些什么:

ifeq ($(imported_nlopt_$(TARGET_ARCH_ABI)),true) 
    return 
endif 

imported_nlopt_$(TARGET_ARCH_ABI) := true 
... 

return当我执行此操作时无法识别。

+0

AFAIK nope。没有这样的东西在做。 – Hayt

回答

0

幸运的是,在Android.mk中,仅保护语句include $(BUILD_SHARED_LIBRARY)等已足够