【问题标题】:How to add local files in Android.mk that are not located inside jni folder如何在 Android.mk 中添加不在 jni 文件夹内的本地文件
【发布时间】:2016-02-19 02:33:11
【问题描述】:

我收到关于找不到 AppDelegate 的错误。
“错误类似于:No rule to make target *.cpp required by *.o”

我的 Android.mk 如下所示:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

$(call import-add-path,$(LOCAL_PATH)/../../cocos2d)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/external)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/cocos)

LOCAL_MODULE := cocos2dcpp_shared

LOCAL_MODULE_FILENAME := libcocos2dcpp

LOCAL_SRC_FILES := hellocpp/main.cpp \
                   ../../Classes/AppDelegate.cpp

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes


我不知道怎么了。我猜这是因为我没有设置正确的类路径。在包资源管理器中,我的结构如下所示:



在我的真实文件夹结构中,Classes 文件夹不在 proj.android 中。它位于外面的文件夹中。

类和移动应用的文件夹

------------------ -------------------------------------------------- -------------
移动应用内

------------ -------------------------------------------------- ------------------------------------

在proj.android里面jni所在的地方

我不确定如何正确链接我的 .ccp 类文件。如何将它们添加为我的本地文件,以便正确构建它?我会很感激我能得到的所有帮助。谢谢。

【问题讨论】:

  • AppDelegate.o 已经存在。在构建之前清理或删除 proj.android/obj
  • 如果你使用$(LOCAL_PATH)/../../Classes/AppDelegate.cpp会怎样?
  • @Michael 我试过这个 ../../../Classes/AppDelegate.cpp 它有效。但问题是我必须一一输入我的课程。有没有更简单的方法?
  • $(wildcard ../../../Classes/*.cpp)
  • wildcard 无法处理 ../../../Classes/<sub dir>/*.cpp。在这种情况下,您可以使用@larskholte 提供的recursive wildcardHere 是 cocos2d-x 项目中使用的示例。

标签: android c++ android-ndk java-native-interface cocos2d-x


【解决方案1】:

从您的屏幕截图中很难看出,但看起来 Classes 和 jni 目录位于同一个父目录中。如果这是真的,你只需要一个'../' 就可以回到父目录。基本上,我认为您想将所有通往 Classes 的路径更改为“../Classes/”。看起来 cocos2d 的路径应该以同样的方式更改。

另外,您缺少模块的最后一行,即包含 $()。例如,如果你想为你的 C++ 代码构建一个动态链接库,你应该在 Android.mk 的末尾添加这一行:

include $(BUILD_SHARED_LIBRARY)

您可以查看一些示例 Android.mks here,以及相关的 Android 文档 here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多