我有一个文件结构:
/top_lib
Android.mk
/sub_lib1
Android.mk
__init__.py
cheese_maker.py
/middle_lib/
Android.mk
/sub_lib2
Android.mk
__init__.py
bread_baker.py
/another_lib
Android.mk
/sub_lib3
Android.mk
__init__.py
leaf_raker.py
并在top_lib中定义了make函数/安卓.mk还有另一个_-lib/Android/mk和middle-lib/安卓.mk在
^{pr2}$在每个子库中/安卓.mk我有以下内容:
LOCAL_PATH := $(call my-dir)
FileList := $(notdir $(wildcard $(LOCAL_PATH)/*.py))
DirName := $(notdir $(LOCAL_PATH:%/=%))
$(call add-files-to-job, $(DirName), $(FileList))
在另一个库中,如果我这么做的话,一切都很好。甚至在中间或顶部。但如果我站在树的顶端,说run m job_stuff,最终我遇到了一个错误:
build/core/base_rules.mk:147 ** path/to/middle_lib: MODULE.TARGET.ETC.__init__.py already defined by path/to/top_lib Stop.
我想我明白发生了什么。它正在把文件转移到模块、目标等,并且具有相同名称的文件会引发错误。但我不知道该怎么解决。我尝试将LOCAL_MODULE := $(1)
改为LOCAL_MODULE := $(2).$(1)
,这使得文件夹名显示在每个文件名之前(例如:sub_lib1.cheese)_制造商.py),我想这就是我让它做的。在
我知道如果我把LOCAL_MODULE_CLASS := ETC
改成其他任何东西,比如在安卓.mk文件,对那个文件有效。但是我似乎找不到很多关于LOCAL_MODULE_CLASS
以及如何利用它的文档,而且由于构建系统相当复杂,我不确定在各地创建新类的影响。在
我还尝试将文件添加从add file改为
LOCAL_PATH := $(call my-dir)
FileList := $(notdir $(wildcard $(LOCAL_PATH)/*.py))
DirName := $(notdir $(LOCAL_PATH:%/=%))
include $$(PROJECT_DEFAULTS)
LOCAL_MODULE := $(DirName)
LOCAL_MODULE_TAGS := job_stuff
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(DESTINATION_DIR)/job_stuff/$(DirName)
LOCAL_SRC_FILES := $(FileList)
include $$(PROJECT_PREBUILT)
当我运行mm时,它确实做了一些事情,但是在m树的顶部,job_stuff什么也没做(好吧,它构建了很多东西,但是$(DESTINATION_DIR)是空的)
所以我被卡住了。如何避免在不同的库中有多个init.py文件?在
目前没有回答
相关问题 更多 >
编程相关推荐