【问题标题】:Android makefiles: How to "early return"?Android makefile:如何“提前返回”?
【发布时间】:2016-10-21 10:00:46
【问题描述】:

我正在使用 ndk-build 构建大量库。在某些时候,一个 mk 文件可能会被包含两次,因为它导入了 3rd 方库,我使用全局变量保护了双重导入:

# 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

【问题讨论】:

  • AFAIK 不。 make 中没有这样的东西。

标签: android c++ makefile android-ndk


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-19
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多