cocos2dx 自动添加所有cpp文件到android.mk

CoppeiaSim(VREP)入门 vrep/CoppeliaSim关节抖动问题原因总结【Coppeliasim|轨迹规划(一)】设置机械臂的关节角时保证机械臂不散架设置机械臂的关节角时保证机械臂不散架。 阅读详情
前言:”懒”在这里当然不是贬义词,而是追求高效,拒绝重复劳动的代名词!做一个懒COCOS2D-X程序猿的系列文章将教会大家在工作中如何偷懒,文章篇幅大多较短,有的甚至只是几行代码,争取把懒发挥到极致!

 

一.懒人说书

Android.mk中LOCAL_SRC_FILES需要罗列出所有参与编译的文件,这样在.cpp文件少的时候还可以一个一个添加,当有几百个文件的时候会十分的痛苦!

除数量多之外让我们看看下面的情况:

1改变了其中一个文件名就得修改mk文件,痛苦之处显而易见,而且会重新编译整个工程!

2.手工添加时因为失误多了空格,少了\之类事情很常见,得重新编译后才能发现问题!

 

二.进击的懒人

是不是不能忍受了!让我们试着改变下吧!

1.写个脚本自动变量里Classes文件夹下的所有.cpp文件,生成和上面类似的Android.mk文件.这个比手动添加要方便好多,但还是没有从根本上解决问题!

 

2.有木有办法在Android.mk中做手脚,不用罗列所有的.cpp文件呢?直到我看到了这篇文章:

http://blog.youkuaiyun.com/qq634416025/article/details/8904466

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. LOCAL_PATH := $(call my-dir)  
  2.   
  3. include $(CLEAR_VARS)  
  4.   
  5. LOCAL_MODULE := hellocpp_shared  
  6.   
  7. LOCAL_MODULE_FILENAME := libhellocpp  
  8.   
  9. FILE_LIST := hellocpp/main.cpp  
  10. FILE_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/*.cpp)  
  11. LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)  
  12.   
  13. LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes  
  14.   
  15. LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static  
  16.   
  17. include $(BUILD_SHARED_LIBRARY)  
  18.   
  19. $(call import-module,cocos2dx)  

这样就OK了,不用手打所有的.cpp文件了!

 

但这这个做法还是有缺陷,就是如果Classes有子文件夹的话还是得在添加上去的,如下:

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. 1  
  2. 2  
  3. 3  
  4. #FILE_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/*.cpp)  
  5. #FILE_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/datapacker/*.cpp)  
  6. #FILE_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/platform/*.cpp)  

这个样子的写法已经很高端了,有新的子文件的时候添加下就好,但是对于懒到极致的人还是不能接受!

 

3.终极解决方案

上边的解决方案用到了wildcard这个关键子,虽然不明白这是神马东西,但肯定可这个有关!于是经过一番google之后,便有了下面的这个:


[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. # 遍历目录及子目录的函数  
  2. define walk  
  3.     $(wildcard $(1)) $(foreach e, $(wildcard $(1)/*), $(call walk, $(e)))  
  4. endef  
  5.    
  6. # 遍历Classes目录  
  7. ALLFILES = $(call walk, $(LOCAL_PATH)/../../Classes)  
  8.    
  9. FILE_LIST := hellocpp/main.cpp  
  10. # 从所有文件中提取出所有.cpp文件  
  11. FILE_LIST += $(filter %.cpp, $(ALLFILES))  
  12.    
  13. LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)  
  14. LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes  

哈哈哈,这样我们只用在项目最开始的时候改变Android.mk文件就以后再也不用碰啦!

 

附我的Android.mk文件,遇到问题可以参考下:

Android

 

 

7月23日更新:

感谢子龙大大^_^的补充:

如果classes目录下面有子目录的话,include路径是不对的。

可以再添加FILE_INCLUDES := $(shell find $(LOCAL_PATH)/../../Classes -type d)

然后LOCAL_C_INCLUDES := $(FILE_INCLUDES) 就可以了。

详细可见子龙大大的Android.mk脚本:

https://gist.github.com/andyque/6060595


原文链接: http://blog.justbilt.com/511/

同类文章参考:http://blog.youkuaiyun.com/ypfsoul/article/details/8909178

泛微Ecology流程数据表结构解析:workflow_requestbase和workflow_currentoperator到底怎么关联查询? 本文深入解析泛微Ecology系统中workflow_requestbase和workflow_currentoperator表的结构与关联机制,提供SQL查询语句示例,帮助开发者高效查询流程数据。涵盖待办事项、已办事项、办结事项和流程监控等典型场景,并分享性能优化技巧和常见问题排查指南。 阅读详情

相关推荐

零基础也能搞定!华为USG6000V防火墙WEB管理界面开启教程

本文详细介绍了华为USG6000V防火墙WEB管理界面的开启教程,从环境准备、网络配置到防火墙初始化,逐步指导用户完成图形化管理界面的搭建。特别适合零基础用户快速掌握企业级防火墙的可视化操作,提升安全管理效率。

grape的博客 786

做一个懒COCOS2D-X程序猿(一)停止手打所有cpp文件到android.mk[转]

前言:”懒”在这里当然不是贬义词,而是追求高效,拒绝重复劳动的代名词!做一个懒COCOS2D-X程序猿的系列文章将教会大家在工作中如何偷懒,文章篇幅大多较短,有的甚至只是几行代码,争取把懒发挥到极致!   一.懒人说书 Android.mk中LOCAL_SRC_FILES需要罗列出所有参与编译的文件,这样在.cpp文件少的时候还可以一个一个添加,当有几百个文件的时候会十分的痛苦!

To be continue 1335

Veeam Backup 13 通过UI界面高效备份VMware ESXi虚拟机的完整指南

本文提供了一份使用Veeam Backup 13图形化界面高效备份VMware ESXi虚拟机的完整指南。内容涵盖从环境准备、添加vCenter/ESXi主机、配置备份存储库,到创建备份任务、设置保留策略与计划,以及执行备份和验证成功的关键步骤。通过直观的UI操作,管理员可以轻松实现虚拟机数据的可靠保护与快速恢复。

weixin_29322553的博客 437

android.mk 如何自动包括所有cpp文件

# 扫描目录下的所有源文件 MY_FILES_PATH := $(LOCAL_PATH)/../../Classes MY_FILES_SUFFIX := %.cpp %.c %.cc My_All_Files := $(foreach src_path,$(MY_FILES_PATH), $(shell find "$(src_path)" -type f) ) My_All_File

kaciya的专栏 1880

成本会计(第九版)王忠孝课后习题答案解析

在掌握了基础知识之后,我们还需要培养自己的实际操作能力。此外,在学习过程中,遇到困难时,要及时向老师、同学请教,不要害怕暴露自己的不足。三人行,必有我师,每个人都有值得学习的地方。首先,我们需要认真阅读教材,把基础知识掌握牢固。在这里,我建议大家使用《成本会计(第九版)》的配套练习册,这样可以帮助我们检查学习效果。同时,网上的一些优质课程和论坛也是不错的学习资源,例如网易云课堂、中国大学MOOC等。别担心,这里我给大家推荐一些实用的学习资料和方法,帮助你更好地掌握这门课程。出版社: 大连理工大学出版社。

weixin_58833001的博客 1888

头歌OpenGauss数据库-G.视图的使用

OpenGauss数据库-G.视图的使用

python一生之敌的博客 1383

Android.mk的用法|静态库|动态库

一个Android.mk file用来向编译系统描述你的源代码。编译系统为你处理许多细节问题。例如,你不需要在你的Android.mk中列出头文件和依赖文件,NDK编译系统将会为你自动处理这些问题。在升级NDK后,你应该得到新的toolchain/platform支持,而且不需要

stefzeus的专栏 1万+

24、虚拟地理信息系统:技术与应用的全面解析

本文全面解析了虚拟地理信息系统(虚拟GIS)的技术架构与应用前景。文章从地理空间数据的增长出发,探讨了虚拟GIS在地形、建筑、天气等多维度数据的交互式可视化技术,重点介绍了全球层次结构、多分辨率模型、缓存分页机制及交互导航方法。系统已应用于天气分析、城市规划、应急响应等领域,并展望了未来在数据处理、模拟操作、移动可视化及智能城市、文化遗产保护等方向的发展路径与技术挑战。

v4w5x6的博客 88

implicit declaration of function —— 函数隐式声明 警告

implicit declaration of function ——函数隐式声明 警告

weixin_51684355的博客 1万+

微信小程序 - 接入腾讯地图 SDK 及详细使用教程,结合小程序 mpa 地图组件展示腾讯地图(基础使用 / 授权当前位置 / 配合小程序map组件的使用 / 腾讯地图逆地址解析 / 坐标系的转化)

微信小程序使用腾讯地图完整流程,微信小程序 接入腾讯地图,如何在微信小程序中接入腾讯地图,微信小程序引入腾讯地图API方法,腾讯地图小程序SDK,微信小程序实现使用腾讯地图SDK步骤详细介绍,微信小程序接入腾讯地图(线路规划、逆解析)、高德地图,微信小程序之使用腾讯地图,微信小程序 接入第三方地图,小程序服务器配置地图,微信小程序接入腾讯地图,微信小程序插入腾讯地图教程,微信小程序如何调用腾讯地图,如何在微信小程序中接入腾讯地图,微信小程序腾讯地图SDK使用方法,在微信小程序上创建一个简单的腾讯地图,微信小

✅ 精选推荐文章 1万+

游戏引擎揭秘:大厂为何死磕自研?

游戏引擎本质与商业价值解析 游戏引擎是集成了渲染、物理、动画等核心功能的开发工具包,其价值在于让开发者免于重复编写底层代码,专注于游戏内容创作。商业引擎(如Unity/Unreal)虽降低了开发门槛,但头部厂商仍坚持自研引擎,主要基于以下考量: 经济性:长期项目分摊自研成本后,比商业引擎分成更划算; 可控性:完全掌握底层代码,能针对性优化核心玩法需求; 技术壁垒:专属引擎成为厂商的竞争优势,如米哈游的跨平台渲染技术; 项目适配:超大型游戏(开放世界/MMO)需要深度定制解决方案。 这种"短期高投入

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 263

implicit declaration of function解决

编译中遇到warning:implicit declaration of function…主要考虑方向: 1.函数是否在c文件中存在定义。 2.在c文件定义的情况下相应的h文件中是否有声明。 3.在c文件和h文件都无问题的情况下,include是否正确。 4.考虑函数参数传递问题。以上方法都检查了,没有发现问题,纠结了好久,实在不知道是哪里的问题,之后尝试在提示warning的.c文件对应的h文件中加入extern+函数类型+函数名;warning消失,点击可以正常跳转至函数页面。得出结论:如果无上述四个

m0_50262974的博客 7415

关于DEJA_VU3D - Cesium功能集专栏说明

专栏主要目的是对工作中基于Cesium实现过的功能进行整合,暂时打算一周2-3更的样子来更新,每一篇都会奉上完整源代码(尽可能把代码简洁一些)。功能实现大多数是自己琢磨实现的,也有参考其他大神后整理实现的,初步算了算现在有差不多实现小130个左右的功能,后续也会不断的更新。..........................................

总得学点什么的博客 2万+

【Cocos2dx】移植安卓避免手动添加cpp文件到Android.mk文件的方法

在Cocos2dx移植安卓时,每次都手动添加cpp文件到Android.mk文件中,但是当文件特别多的时候,貌似就有些吃不消了,在网上找了一些资料,现在终于可以避免手动添加了,为了避免以后忘记,现把方法记录,以备后用,具体如下: 添加以下代码到Android.mk文件下, define walk     $(wildcard $(1)) $(foreach e, $(wildcard

jangje的专栏 1094

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

cocos2dx自动添加cpp文件到android.mk中

默认: LOCAL_SRC_FILES := hellocpp/main.cpp \ ../../Classes/AppDelegate.cpp \ ../../Classes/HelloWorldScene.cpp 修改为: FILE_LIST := hellocpp/main.cpp   FILE_LIST +

伯爵的专栏 490

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

android mk文件在哪里,Android.mk – 在目录中构建所有源文件

我使用Android NDK来构建我的cocos2dx项目,在Android.mk中,有一个LOCAL_SRC_FILES的定义,其中列出了每个cpp文件.每当我添加一个新的源文件时,我都需要在那里添加它…它看起来像这样:LOCAL_SRC_FILES := hellocpp/main.cpp \hellocpp/myclass.cpp \hellocpp/mynextclass.cpp \../...

weixin_39892460的博客 953

cocos2dx移植到Android报错:collect2: ld returned 1 exit status

今天将一个cocos2dx小游戏移植到Android平台,并进行编译和打包时,遇到以下错误: d:/android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/

继续沉淀! 4003

android自动搜索,学习笔记 Android.mk 自动搜索

最近被Android.mk这东西折腾的一晚,这里记录一下。ios就省心多了,不用管那么多,xcode自己解决了。文本工具:MACVIM(文本编辑工具 非常好用 能清楚分清tab 和空格,以免编写.mk时出错)这个文件是向编译器描述源代码文件,便于它去解析。以下是cocos2dx-3.2新建项目时生成的Android.mk文件基本语法:“#” 注释“:=” 赋值“+=” 追加“$” 引用某...

weixin_39669163的博客 308

【cocos2dx】停止手打所有cpp文件到android.mk

做一个懒COCOS2D-X程序猿(一)停止手打所有cpp文件到android.mk 前言:”懒”在这里当然不是贬义词,而是追求高效,拒绝重复劳动的代名词!做一个懒COCOS2D-X程序猿的系列文章将教会大家在工作中如何偷懒,文章篇幅大多较短,有的甚至只是几行代码,争取把懒发挥到极致! 一.懒人说书 Android.mk中LOCAL_SRC_FILES需要罗列出所有参与...

20386053 91

cocos2dx 自己主动加入cpp文件到android.mk

将 LOCAL_SRC_FILES := hellocpp/main.cpp \ ../../Classes/AppDelegate.cpp \ ../../Classes/HelloWorldScene.cpp改动成 FILE_LIST := hellocpp/main.cpp FILE_LI...

weixin_34007886的博客 98

cocos2dx 在Android.mk加源所有.CCP文件

手动写是很烦,烦不说,写错也是难免的,好在有了这段代码

韦庆礼的专栏 java C# .NET JSP 708

cocos2dx jni Android.mk配置,实现自动搜索.cpp文件打包

用cocos2dx 自带的mk文件打android包,

xie306156862的专栏 632

cocos2dx 3.0 android.mk,cocos2dx中Android.mk的万能模板

cocos2dx工程打包成Android APK当然少不了编辑android工程目录下的Android.mk文件,主要工作就是把Classes目录下的*.cpp文件添加进来进行编译。下面就分Android工程在Eclipse和AndroidStudio两种情况来说明。Eclipse在项目的 proj.android\jni 目录下的 Android.mk 文件中,需要对 LOCAL_SRC_FIL...

weixin_30693337的博客 347

【COCOS2DX-ANDROID-游戏开发之二十】停止手打所有cpp文件到android.mk

一.懒人说书 Android.mk中LOCAL_SRC_FILES需要罗列出所有参与编译的文件,这样在.cpp文件少的时候还可以一个一个添加,当有几百个文件的时候会十分的痛苦! 我们下看看TestCpp工程中的Android.mk文件: 这只是节选的一部分,大概只有50个左右吧,除数量多之外让我们看看下面的情况: 1改变了其中一个文件...

100

Cocos2d-x 中Android.mk自动生成.cpp与.c类路径

今天,同事发现了一个可以自动生成Android.mk的脚本。这里贴上留着以后使用。之前在网上找的脚本只能识别以.cpp结尾的类,经过修改后也可以识别.c结尾的类。

杜甲同学的专栏 1926

android studio 调试cocos2dx c++代码

cocos2dx 2.26 使用android studio 调试c++

u014397684的博客 3885

cocos2dx移植到Android平台避免手动添加CPP路径到Android.mk

参考文章1:[原创]编写Android.mk中的LOCAL_SRC_FILES的终极技巧 参考文章2:Eclipse Cocos2d-x 开发自动管理 在对cocos2dx项目移植到Android平台时,经常需要手动配置Android.mk文件,这里根据以上两篇文章(尤其是第一篇文章,讲的很详细),自己实现避免手动配置Android.mk的配置。 先看看修改后的Android.mk文件配置:

继续沉淀! 1627
上一篇: “error LNK1169: 找到一个或多个多重定义的符号”的解决方法(转载)
下一篇: cocos2dx向android平台移植出现问题undefined reference to 'sqlite3_close' collect2: ld returned 1 exit status
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值