gpt4 book ai didi

Android NDK : how to include Android. mk 进入另一个 Android.mk(分层项目结构)?

转载 作者:IT老高 更新时间:2023-10-28 23:08:39 26 4
gpt4 key购买 nike

看起来有可能,但我的脚本产生了奇怪的结果:

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

include $(LOCAL_PATH)/libos/Android.mk
include $(LOCAL_PATH)/libbase/Android.mk
include $(LOCAL_PATH)/utils/Android.mk

LOCAL_MODULE := native
include $(BUILD_SHARED_LIBRARY)

只有第一个包含被解析得很好,其他 Android.mk 文件被搜索到奇怪的路径。有什么建议吗?

更新:我破坏了我的建筑环境...在办公室还可以,但在家里 LOCAL_PATH:= $(call my-dir) 将 LOCAL_PATH 定义为 NDK 目录而不是项目目录.这是我的建筑批处理:

set BASHPATH=K:\cygwin\bin\bash
set PROJECTDIR=/cygdrive/h/Alex/Alex/Work/Android/remote-android
set NDKDIR=/cygdrive/h/Alex/Programming_Docs/Android/android-ndk-r6/ndk-build
set APP_BUILD_SCRIPT=/cygdrive/h/Alex/Alex/Work/Android/project/jni/Android.mk
set DEV_ROOT=h:/Alex/Alex/Work/Android/project

%BASHPATH% --login -c "cd %PROJECTDIR% && %NDKDIR%"

更新:我完全不明白这东西是如何组成路径的。我在“/cygdrive/d/project/jni//cygdrive/d/Soft/project/jni/libos/src/libos.cpp”之类的路径中遇到错误。这是在我决定在根目录中指定所有文件之后Android.mk 而不是包含子模块。

更新 2:不走运,这也不起作用:

LOCAL_PATH:= $(call my-dir)
# Include makefiles here.
include $(LOCAL_PATH)/libos/Android.mk
include $(LOCAL_PATH)/libbase/Android.mk
include $(LOCAL_PATH)/utils/Android.mk

# Clear variables here.
include $(CLEAR_VARS)

最佳答案

这里已经很晚了,但如果有人读到这个问题,解决路径损坏问题的一种方法(指向从 jni 中插入文件的 ndk)是在你的 jni 文件夹中:

include $(call all-subdir-makefiles)

然后在它的每个子文件夹中(在 OP 的情况下为 libos、libbase 和 ustils)一个这种形式的 Android.mk:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_C_INCLUDES := $(LOCAL_PATH)
LOCAL_MODULE := utils
LOCAL_SRC_FILES := one.c
LOCAL_SRC_FILES += two.c

第二个 Android.mk 与 jni 文件夹中的子文件夹中的 one.c 和 two.c 文件。

请注意,尝试一些事情

LOCAL_PATH_BIS_WEIRD_OTHER_NAME := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_C_INCLUDES := $(LOCAL_PATH_OTHER_FUNKY_NAME)
LOCAL_MODULE := utils
LOCAL_SRC_FILES := one.c
LOCAL_SRC_FILES += two.c

将再次导致编译器在寻找 ndk 所在的源代码时感到困惑。

因此,在 jni 的每个子目录中完全以这种形式使用 LOCAL_PATH := $(call my-dir)include $(call all-subdir-makefiles) strong> 在 jni 本身中,你不应该有问题。

希望这会对某人有所帮助。

编辑:发生这种行为是因为包含 $(CLEAR_VARS) 没有删除保存在 LOCAL_PATH 中的内容。

关于Android NDK : how to include Android. mk 进入另一个 Android.mk(分层项目结构)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6942730/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com