2012-04-03 8 views
2

ich will mein Android-Projekt mit NDK bauen, so erstellt ich mein Make-Datei wie folgt:make Datei Quelldatei Grenze (Android NDK)

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

LOCAL_SRC_FILES := AppDelegate.cpp\ 
        MainMenuScene.cpp\ 
        ArtTestScene.cpp\ 
        AppDelegate.cpp\ 
        objb/Config.cpp\ 
        objb/ExtendedString.cpp\ 
        objb/json.cpp\ 
        objb/TimeStamper.cpp \ 
        Objects/Actor.cpp \ 
        Objects/BackGround.cpp \ 


LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../cocos2dx \ 
        $(LOCAL_PATH)/../../cocos2dx/platform \ 
        $(LOCAL_PATH)/../../cocos2dx/include \ 
        $(LOCAL_PATH)/../../CocosDenshion/include \ 
        $(LOCAL_PATH)/../../cocos2dx/lua_support \ 
        objb \ 

LOCAL_LDLIBS := -L$(call host-path, $(LOCAL_PATH)/../android/libs/$(TARGET_ARCH_ABI)) \ 
       -lcocos2d -lcocosdenshion \ 
       -L$(call host-path, $(LOCAL_PATH)/../../cocos2dx/platform/third_party/android/libraries/$(TARGET_ARCH_ABI)) -lcurl 

include $(BUILD_SHARED_LIBRARY) 

problom ist ich diese Fehlermeldung erhalten:

jni/../../Classes/Android.mk:12: *** recipe commences before first target. Stop. 

aber wenn ich Quelldatei (jede Quelldatei) reduziere, habe ich diesen Fehler nicht erhalten! aber mein Projekt wurde nie erstellt, weil die erforderlichen Quelldateien nicht erstellt wurden

+0

Sie "schließen" zwei Dinge ein, die wir nicht sehen können und deren Namen in diesem Makefile (oder Makefile-Fragment) nicht einmal definiert sind. Es gibt keine Befehle hier, also ist das Problem in einer der Dateien, die Sie "einschließen" (oder vielleicht gibt es mehr zum makefile, als Sie uns zeigen). Wir könnten eine Chance haben, wenn wir 'Android.mk' sehen könnten (mindestens Zeile 12). – Beta

+0

Die Quelle, die ich eingeschlossen habe, ist android.mk – Ocelot

Antwort

6

Dieser Fehler bedeutet, dass (a) es eine Zeile gibt, die mit einem TAB-Zeichen beginnt, und (b) es keine andere Art von Zeile kennt (B. eine Variablenzuordnung usw.)

In diesem Fall wird davon ausgegangen, dass die Zeile Teil des Rezepts einer Regel sein soll, aber davor gibt es keine Regel (kein Ziel).

Das Problem ist, dass Ihre Linie:

    objb/json.cpp\ 

ein Leerzeichen nach dem Schrägstrich hat. Aus diesem Grund wird der Backslash der Zeilenumbruch nicht verlassen und so denkt make nicht, dass die nächste Zeile Teil der Variablenzuweisung ist. Da es mit einem TAB beginnt ...

Es ist wichtig in Makefiles, um sicherzustellen, dass Sie keine überflüssigen Leerzeichen haben. Viele moderne Editoren haben Modi, die dies zeigen: Aktivieren Sie sie beim Bearbeiten von Makefiles.