2012-04-03 53 views
2

我想建立我的NDK的Android項目,所以我創造了我的make文件是這樣的:make文件的源文件限制(的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是我得到這個錯誤:

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

但是當我減少源文件(任何源文件),我沒有得到這個錯誤!但我的項目從來沒有建立,因爲所需的源文件不是內置的

+0

您包含了兩件我們看不到的東西,其名稱甚至沒有在這個makefile(或makefile片段)中定義。這裏沒有命令,所以問題出現在你包含的文件之一中(或者你可能會看到更多的makefile文件)。如果我們能看到「Android.mk」(至少是第12行),我們可能會有機會。 – Beta 2012-04-03 09:11:22

+0

我包含的源代碼是android.mk – Ocelot 2012-04-03 09:20:00

回答

6

這個錯誤的含義是(a)有一行以TAB字符開頭,(b)它沒有任何其他類型的行知道例如變量賦值等)

在這種情況下,make假定該行意圖成爲規則的配方的一部分,但在它之前沒有規則(無目標)。

的問題是,您的線路:

    objb/json.cpp\ 

有反斜槓後的空間。正因爲如此,反斜槓並不是逃避換行符,所以make不認爲下一行是變量賦值的一部分。由於它以TAB開始...

在makefile中確保您沒有任何多餘的尾隨空白是至關重要的。許多現代編輯器都有這樣的模式:編輯makefile時啓用它們。