Android.mk语法问题

Kai*_*aan 2 makefile android-ndk

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

这是我的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
Run Code Online (Sandbox Code Playgroud)

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

Eld*_*mov 7

您无法在Make中的变量定义中添加注释.

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

...
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

或者使用append运算符拆分它并在外面留下注释:

# 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
Run Code Online (Sandbox Code Playgroud)