一般只需要修改*.mk文件中的。
MK文件中有命令不了解的请看:http://blog.csdn.net/tutuboke/article/details/28594189
LOCAL_SRC_FILES 这个命令 这个是要编译的*.cpp文件LOCAL_EXPORT_C_INCLUDES 和
LOCAL_C_INCLUDES 是要搜索头文件的包含的目录 *.h
添路径都要填相对路径:
LOCAL_PATH := $(call my-dir)
LOCAL_MODULE_FILENAME := 改变生成库的名字 (作用不是很大)
返回当前MK文件的所在路径 , 上面设置的目录都是相当于这个设置的。MK文件跟makefile文件查不多
假如用cygwin编译*.so文件,遇到头文件找不到报错的时候。一般是找最近的*.mk文件,因为不同的*.mk文件负责编译不同的模块,最后链接起来生成*.so文件。
编译报错:提示看这个
BaseClasses/UIWidget.h:30:42: fatal error: ../Layouts/UILayoutParameter.h: No such file or directory
这样。这个是在现有搜索目录中找不到这个文件
UILayoutParameter.h
可以看一下。UIWidget.h文件。 看是怎么包含UILayoutParameter.h文件的。
../ 上一级目录
./当前目录
一般直接在
LOCAL_EXPORT_C_INCLUDES 和
LOCAL_C_INCLUDES 加上 UILayoutParameter.h 文件相对于 LOCAL_PATH的目录即可
例子:(\为链接符 LOCAL_EXPORT_C_INCLUDES 命令必须在同一行, 要换行写 必须加上 \)
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) \
$(LOCAL_PATH)/GUI/CCControlExtension \
路径是这样写的 太重要了:$(LOCAL_PATH)/../../dragonbones \
\ 是换行连接符 都记住方向了
错误方式:
LOCAL_EXPORT_C_INCLUDES 与 LOCAL_C_INCLUDES 区别:(猜测,不明白两个都+上,保证能搜到那个文件)
LOCAL_EXPORT_C_INCLUDES 应该是普通的引入
LOCAL_C_INCLUDES 好像*.a库的引入
如果C++用到C++11的语法:
需要在工程中-》proj.android\jni 目录中的MK文件修改:添加gcc 对 C++11的编译支持
如果是在:Android.mk 中(放到 include $(CLEAR_VARS) 下面)
LOCAL_CFLAGS += -std=c++11
或在:Application.mk 中添加:
APP_CPPFLAGS += -std=c++11
错误方式:
可参考:http://blog.sina.com.cn/s/blog_6fe0eb1901018rzy.html
c++异常处理代码:(如果编译*.so文件需要在 :Application.mk 中设置, 不设置异常处理的代码会报错) Application.mk 设置如下:
APP_CPPFLAGS += -fexceptions -Wno-error=format-security
错误方式:
包含其他的模块:(这两个命令一般一起使用 下面的是包含那个目录下的MK 文件, 上面的这个是载入那个模块)
LOCAL_WHOLE_STATIC_LIBRARIES += dragonbones_cocos2dx_static
$(call import-module,extensions/dragonbones)
上面第一个蓝色的 是那个mk文件(LOCAL_MODULE后面的变量, 也就是模块的名字,这是全局唯一的)
LOCAL_MODULE := dragonbones_cocos2dx_static
第二个蓝色 是载入模块的路径 (这个路径到底是依据上面 我也没弄清楚)
MK文件的注释: #
注意不能放到 一个命令里面
比如:
LOCAL_SRC_FILES := \
Animation.cpp \
#AnimationEvent.cpp \
AnimationState.cpp \
这是错误的
编译so链接错误:
MK文件中命令 LOCAL_SRC_FILES := 中的*.CPP文件找不到报错:
#注释 声明 ANDROID_NDK_ROOT变量
ANDROID_NDK_ROOT=/cygdrive/c/android-ndk-r9
# 打印变量的内容: 这个运行的时候很好用
echo " ANDROID_NDK_ROOT = $ANDROID_NDK_ROOT"