包括Android.m中的Python库

2024-06-07 04:09:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文件结构:

/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文件?在


Tags: 文件pathpyinitliblocaltopjob