4
votes

I try to use wilcards in Android.mk with help of this answer https://stackoverflow.com/a/8459242/1039175
But get and error:

make: No rule to make target jni/jni/abyss_engine.c', needed byobj/local/armeabi/objs-debug/AbyssEngine/jni/abyss_engine.o' - this error means no source file found and it's natural because where no jni subfolder in jni folder

Where comes an extra jni in path and why? My source files just in jni folder without any subfolders, how to fix it?

My Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := AbyssEngine
LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.c)
(abyss_engine.c asset_manager.c jni_bridge.c shader_manager.c input_manager.c works fine)
LOCAL_LDLIBS := -llog -lGLESv2
LOCAL_CFLAGS := -Werror
include $(BUILD_SHARED_LIBRARY)

2

2 Answers

4
votes

All thanks to a1 from android-ndk group

LOCAL_SRC_FILES=$(notdir $(wildcard $(LOCAL_PATH)/*.c)) 

http://groups.google.com/group/android-ndk/browse_thread/thread/9d4251e0900a31e6/4b792fc207e454c2#4b792fc207e454c2 - there is more useful info in his reply

0
votes

I use External Tools to complie file, and I met this problem in my project。

I change the Working directory Path and the problem is solved。

step1: Settings -> Tools -> External Tools -> NDK ->my build -> Working directory

step2:

my old Working directory path is :$ModuleFileDir$\src\main

I change it to : $ModuleFileDir$\src\main\jni

and It runs very well for me!