Android.mk语法问题

时间:2011-12-26 18:37:23

标签: android-ndk makefile

我遇到了一个简单的问题。

这是我的Android.mk:

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := libandroidgameengine
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../include/ \
                    $(LOCAL_PATH)/../interface/ \
                    $(LOCAL_PATH)/../include/Render \
                    $(LOCAL_PATH)/../include/Utils

LOCAL_SRC_FILES :=  # Core
                    ../src/Engine.cpp \

                    # Rendering
                    ../src/Render/RenderManagerImpl.cpp \

                    # Utils
                    ../src/Utils/LogManagerImpl.cpp \

                    # Memory
                    ../src/Memory/MemoryManagerImpl.cpp \
                    ../src/Memory/malloc.c

LOCAL_EXPORT_C_INCLUDES := $(LOCAL_C_INCLUDES)
LOCAL_CFLAGS := -DSTRUCT_MALLINFO_DECLARED
LOCAL_LDLIBS    := -lGLESv2 -llog

我一直在第一个目标之前开始“Android.mk:11 * 命令”错误。我知道它与我构造源文件的方式有关(使用主题标签来表示引擎的特定部分)但我不明白它实际上应该是什么样子。任何提示?     包括$(BUILD_STATIC_LIBRARY)

2 个答案:

答案 0 :(得分:6)

您无法在Make中为变量定义添加注释。

LOCAL_SRC_FILES :=  # Core
                    ../src/Engine.cpp \

...

Makefile语法是基于行的,因此在上面的代码中,解析器只将第一行视为变量赋值(实际上它将LOCAL_SRC_FILES设置为空字符串)。第二行被解析为独立语句,在您的情况下作为配方(由于前导选项卡)。

尝试从变量定义中删除注释:

LOCAL_SRC_FILES := \
    ../src/Engine.cpp \
    ../src/Render/RenderManagerImpl.cpp \
    ../src/Utils/LogManagerImpl.cpp \
    ../src/Memory/MemoryManagerImpl.cpp \
    ../src/Memory/malloc.c

或者使用追加运算符拆分它并将注释留在外面:

# Core
LOCAL_SRC_FILES := ../src/Engine.cpp

# Rendering
LOCAL_SRC_FILES += ../src/Render/RenderManagerImpl.cpp

# Utils
LOCAL_SRC_FILES += ../src/Utils/LogManagerImpl.cpp

# Memory
LOCAL_SRC_FILES += \
    ../src/Memory/MemoryManagerImpl.cpp \
    ../src/Memory/malloc.c

答案 1 :(得分:2)

确保反斜杠后没有空格,我也不确定在反斜杠结束行之间添加空白行/注释是否正常