【发布时间】: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