无需手动添加源文件和头文件目录的android.mk文件
来源:互联网 发布:阿里云 waf 价格 编辑:程序博客网 时间:2024/05/29 11:14
不知道为什么,cocos2d-x火了这么久了,从win32工程转一个android工程并编译出包这个过程,居然到现在还没有一个一键转换为eclipse工程并且能直接正常编译的东西?大概是我孤陋寡闻不知道也说不定。
这台新买的笔记本上cygwin安装了两个晚上终于算是安装的勉强能用了,晚上看了下mk文件,又顿时对要维护源文件列表LOCAL_SRC_FILES和头文件路径LOCAL_C_INCLUDES蛋疼不已。
网上搜索了下,LOCAL_SRC_FILES的自动包含可谓满地跑,但不知为什么头文件包含路径的自动处理却一个也没看到。真正去看了下make的过程,当前路径一直在变化,又看了下makefile的语法,似乎没有合适的字符串操作(patsubst只能过滤掉固定的东西)。好在makefile还留了个shell的调用接口,虽然据说会有一定的效率损失。
其实想想,include目录这种东西,其实路径也没几个,而且写的认真点的人,在cpp include的时候,说不定就已经用了../../之类的路径。就不会有像我拿到手的测试工程一样,有要加很多个目录的困扰。实在不行,在mk文件中,硬编码工程的绝对路径再find,说起来效率还高点。但我就是个蛋疼帝……在makefile里加sed,真心有点麻烦。stackoverflow里一个仁兄的回答看起来不能用,不知道是不是因为我是cgwwin而不是正式unix环境的原因。http://stackoverflow.com/questions/3800257/sed-in-makefile-usage。好几个小时shell和makefile鼓捣来鼓捣去到睡眼惺忪的时候,总算是给折腾好了,下面就是成果,虽然其实没有多大的实际意义大概……
#android.mk with common source files and header files#Ruoqian,Chen<piao.polar@gmail.com>#2013.6.28LOCAL_PATH := $(call my-dir)CUR_PATH := $(shell pwd)#REDUCE_CLASSES := $(shell ${$(CUR_PATH)%Classes*})#REDUCE_PROJ_ANDROID := $(shell ${$(REDUCE_CLASSES)%proj.android*})#REDUCE_CLASSES := $(shell $(echo $(CUR_PATH)|sed 's/Classes.*//g'))#FULL_PATH := /cygdrive/g/SDK/cocos2d-2.1rc0-x-2.1.3/MyGame/proj.android/jniREDUCE_CLASSES := $(shell echo $(CUR_PATH)| sed -e "s/Classes.*//g" )REDUCE_PROJ_ANDROID := $(shell echo $(REDUCE_CLASSES)| sed -e "s/proj.android.*//g" )PROJECT_DIR := $(REDUCE_PROJ_ANDROID)JNI_DIR := $(PROJECT_DIR)proj.android/jniinclude $(CLEAR_VARS)LOCAL_MODULE := game_sharedLOCAL_MODULE_FILENAME := libgameLOCAL_CPPFLAGS += -fexceptionsdefine all-source-files$(patsubst jni/%,%, $(shell find $(LOCAL_PATH)/../../Classes/ $(LOCAL_PATH)/hellocpp -name "*.cpp|*.c")) endefLOCAL_SRC_FILES := $(call all-source-files)#LOCAL_SRC_FILES := hellocpp/main.cpp \# ../../Classes/AppDelegate.cpp \# ../../Classes/HelloWorldScene.cppdefine all-include-dirs$(shell find $(PROJECT_DIR)Classes/ $(JNI_DIR)/hellocpp -type d))endefLOCAL_C_INCLUDES := $(call all-include-dirs)#LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static cocosdenshion_static cocos_extension_static include $(BUILD_SHARED_LIBRARY)$(call import-module,CocosDenshion/android) \$(call import-module,cocos2dx) \$(call import-module,extensions)
- 无需手动添加源文件和头文件目录的android.mk文件
- Cocos2d-x 中 Android.mk 自动添加源文件和头文件目录的路径
- 终极Android.mk模板,遍历头文件和源文件目录
- 关于android.mk文件的作用、语法和自动添加源文件的学习
- cocos2d-x android.mk文件中添加源文件,不需要每个cpp都去手动去包含一次
- 头文件和源文件
- 头文件和源文件
- 【Cocos2dx】移植安卓避免手动添加cpp文件到Android.mk文件的方法
- 头文件和源文件关联的问题
- 头文件和源文件关联的问题
- 头文件和源文件的关系
- 头文件和源文件的区别
- 头文件和源文件的关系
- 头文件和源文件的关系
- 关于头文件和源文件的分别
- 关于头文件和源文件的分别
- 头文件和源文件的关系[转]
- 关于头文件和源文件的分别
- grep详细用法(与正则的结合)
- [C#] 怎么删除ArrayList中的重复值
- AWK 详细用法讲解 (有举例说明)
- C/C++ 日常小积累
- 黑马程序员---String类
- 无需手动添加源文件和头文件目录的android.mk文件
- 网络服务器(1)------获得支持的socket选项
- [重构到模式-State Pattern]把网球计分招式重构到状态模式
- 网络服务器(2)------nop
- 感知器
- C++面试题算法
- 求平方根sqrt()函数的底层算法效率问题
- GitHub简介与使用
- 字符串反转