make file source file limit(android ndk)

时间:2012-04-03 08:52:01

标签: makefile android-ndk

我想用ndk构建我的android项目,所以我创建了这样的make文件:

    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)

问题是我得到这个错误:

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

但是当我减少源文件(任何源文件)时,我没有收到此错误!但是我的项目从未构建,因为没有构建所需的源文件

1 个答案:

答案 0 :(得分:6)

这个错误的含义是(a)有一个以TAB字符开头的行,(b)它不是任何其他类型的行知道(例如变量赋值等)。

在这种情况下,make假定该行旨在成为规则的配方的一部分,但它之前没有规则(没有目标)。

问题在于您的行:

                   objb/json.cpp\ 

在反斜杠之后有一个空格。因此,反斜杠不会转义换行符,因此make不认为下一行是变量赋值的一部分。因为它以TAB开始...

在makefile中,确保您没有任何无关的尾随空格是至关重要的。许多现代编辑都有模式可以显示:编辑makefile时启用它们。