Android makefile:如何及早回归"?

时间:2016-10-21 10:00:46

标签: android c++ makefile android-ndk

我正在使用ndk-build构建一个库的bucnh。在某些时候,mk文件可以包含两次,因为它导入第三方库,我使用全局变量保护双重导入:

# 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

1 个答案:

答案 0 :(得分:0)

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