Theos MakeFile的内容
theos 是初期ios插件开发者经常使用的工具,现在被集成在iosOpenDev的logos所实现,不需要再自己写makefile来实现
程序的自动编译。不过这里还是要简单的介绍一下如何写一个插件的makefile,这样更有利于理解编译机制.
1 # 2 # Use this makefile to compile service project. 3 # When change SDK or add new files ,re-edit values below. 4 # zhj 5 # 2012-07-17 6 # txtw 7 # 8 9 export THEOS=/opt/theos/ 10 export SDKVERSION=5.1 11 export THEOS_DEVICE_IP=10.0.2.3 12 #192.168.1.157 13 #10.0.2.2 14 export CURRENT_VERSION = 1104 15 16 include theos/makefiles/common.mk 17 18 TWEAK_NAME = service 19 20 RESOURCE_DIR = Resources 21 22 DEBUG = 1 23 24 #SUBPROJECTS=servicePreferences 25 26 #编译单元 27 # 28 # 29 30 31 #编译 ----------------------------ASIHTTPRequest-------------------- 32 service_FILES += ASIHTTPRequest/ASIAuthenticationDialog.m 33 service_FILES += ASIHTTPRequest/ASIDownloadCache.m 34 service_FILES += ASIHTTPRequest/ASIFormDataRequest.m 35 service_FILES += ASIHTTPRequest/ASIHTTPRequest.m 36 service_FILES += ASIHTTPRequest/ASIInputStream.m 37 service_FILES += ASIHTTPRequest/ASINetworkQueue.m 38 service_FILES += ASIHTTPRequest/Reachability.m 39 40 #编译 ----------------------------Encoder--------------------------- 41 service_FILES += Encoder/CrypHelper.m 42 service_FILES += Encoder/GTMBase64.m 43 service_FILES += Encoder/NSData+Base64.m 44 service_FILES += Encoder/NSString+MD5Addition.m 45 service_FILES += Encoder/UIDevice+IdentifierAddition.m 46 47 #编译 ----------------------------TBXML----------------------------- 48 service_FILES += TBXML/NSDataAdditions.m 49 service_FILES += TBXML/TBXML.m 50 51 #编译 ----------------------------Regex----------------------------- 52 service_FILES += Regex/RegexKitLite.m 53 54 #编译 ----------------------------Constant-------------------------- 55 service_FILES += Constant/Constant.m 56 service_FILES += Constant/UserDefaults.m 57 58 #编译 ----------------------------SOAP----------------------------- 59 service_FILES += SOAP/Head.m 60 service_FILES += SOAP/Body.m 61 62 #编译 ----------------------------MsgService----------------------------- 63 service_FILES += MsgService/MsgService.m 64 service_FILES += MsgService/MessageInfo.m 65 service_FILES += MsgService/Msgs/NetBrain.m 66 service_FILES += MsgService/Msgs/KeepAliveReturnMsg.m 67 service_FILES += MsgService/Msgs/DevBindReturnMsg.m 68 service_FILES += MsgService/Msgs/FamilyPhoneMsg.m 69 service_FILES += MsgService/Msgs/LocationMsg.m 70 71 #编译 ----------------------------ParseXML----------------------------- 72 service_FILES += ParseXML/ParseXML.m 73 74 75 #编译 ----------------------------Command--------------------------------- 76 service_FILES += Command/TxtwCommand.m 77 78 #编译 ----------------------------BaiduMap--------------------------------- 79 service_FILES += BaiduMap/MapPointAnnotion.m 80 81 #编译 ----------------------------service----------------------------- 82 service_FILES += service/service.mm 83 service_FILES += Tweak.xm 84 85 86 #连接单元 87 # 88 #连接 ----------------------------framework-------------------------- 89 service_FRAMEWORKS = Foundation UIKit QuartzCore Foundation CoreFoundation CoreGraphics MobileCoreServices 90 service_FRAMEWORKS += SystemConfiguration CFNetwork CoreTelephony CoreLocation MapKit 91 92 93 #连接 ----------------------------dylib------------------------------ 94 service_LDFLAGS = -lxml2 -lz -licucore -lgcc -lgcc_eh -lstdc++ 95 service_LDFLAGS += -L./BaiduMap/inc -R./BaiduMap/inc/ -lbaidumapapi 96 97 #编译器 ---------------------------------------------------------- 98 #service_CFLAGS += -std=c99 99 #service_CFLAGS += -all_load 100 101 #资源文件 ---------------------------------------------------------- 102 internal-package:: 103 ifneq ($(wildcard $(RESOURCE_DIR)/*.png), ) 104 mkdir -p $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences/$(TWEAK_NAME) 105 cp $(RESOURCE_DIR)/*.png $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences/$(TWEAK_NAME)/ 106 endif 107 ifneq ($(wildcard $(RESOURCE_DIR)/*.lproj), ) 108 mkdir -p $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences/$(TWEAK_NAME) 109 rsync -avC $(RESOURCE_DIR)/*.lproj $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences/$(TWEAK_NAME) 110 endif 111 ifneq ($(wildcard $(RESOURCE_DIR)/$(TWEAK_NAME).plist), ) 112 mkdir -p $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences/$(TWEAK_NAME) 113 cp $(RESOURCE_DIR)/$(TWEAK_NAME).plist $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences/$(TWEAK_NAME) 114 endif 115 116 include $(THEOS_MAKE_PATH)/tweak.mk
对这个makefile做一个简单的解读:
1 9~14行属于系统配置部分:其中11行是调试设备的IP地址 2 16行是引入常用的一般模板 3 18行工程名称 4 20行存放资源文件的本地目录名称:可以自定义 主要是在生成包拷贝时使用 5 22行是否是调试状态:常用的一个宏设置是否显示NSLog 区分是debug还是release 也可以自己尝试设置其他宏变量 6 26~83行是编译所需要的的源文件 7 88~90行是sdk中的framework 8 93~95行是需要的一些系统静态库和第三方静态库 9 97~99行是编译器参数设置 10 101~114行是拷贝资源文件 11 116行是引入tweak模板
通过上面的文件我们可以看到,theos的makefile写法与其他linux/unix环境下的makefile写法大同小异,多参考一些github上的tweak的makefile写法,很快就可以掌握技巧。
Theos MakeFile的内容相关推荐
- Theos(六):官方文档
目录 Home(主页) Installation(安装) Installation iOS(iOS 平台上的安装) Installation macOS(macOS 平台上的安装) Installat ...
- 浅显易懂 Makefile 入门 (09)— include 文件包含、MAKECMDGOALS
1. include文件包含 当 make 读取到 include 关键字的时候,会暂停读取当前的 Makefile,而是去读 include 包含的文件,读取结束后再继读取当前的 Makefile ...
- makefile 中 =, :=, ?=, +=的区别
在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验 新建一个Makefile,内容为: ifdef DEFINE_VRE VRE ...
- 自动生成Makefile的全过程详解
automake/autoconf入门 作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便.一般情况下,大家都是手工写一个简单Makefil ...
- Ubuntu下makefile及gcc生成静态库动态库的简单使用举例
环境:Ubuntu-13.10 32位(虚拟机).gcc4.8.1 首先创建一个test_makefile_gcc文件夹,此test_makefile_gcc文件夹下包括:src文件夹用于存放源文件 ...
- 详解linux下auto工具制作Makefile源码包(制作篇)
2019独角兽企业重金招聘Python工程师标准>>> 详解linux下auto工具制作Makefile源码包(制作篇) 水木杨 一. 概述 为了更好的制作configure ...
- 向大家推荐一个C/C++通用Makefile
在使用 Makefile 之前,只需对它进行一些简单的设置即可:而且一经设置,即使以后对源程序文件有所增减一般也不再需要改动 Makefile.因此,即便是一个没有学习过 Makefile 书写规则的 ...
- Makefile中指示符“include”、“-include”和“sinclude”的区别
指示符"include"."-include"和"sinclude" 如果指示符"include"指定的文件不是以斜线开 ...
- linux内核kconfig objs,linux内核中Kconfig和Makefile 详解
内核源码树的目录下都有两个文档 Kconfig (2.4版本是Config.in)和Makefile.分布到各目录的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录 ...
最新文章
- oracle occi出现乱码,linux下occi操作oracle数据库,中文乱码的问题
- 【CV】大盘点 | 性能最强的目标检测算法
- QT、QTE、qtopia区别
- 从零开始编写自己的C#框架(18)——Web层后端权限模块——菜单管理
- 苹果叫停经销商供货拼多多?官方回应:系谣言 所售新款iPhone均为正品
- leetcode记录-回文数
- mysql如何开启对外连接?
- OpenCV Viz 3D虚拟空间模块
- 20200203_selenium爬取百度新闻
- Kubernetes Pod 健康检查机制 LivenessProbe 与 ReadinessProbe
- Photoshop 抠图方式
- Excel表格多个工作表数据汇总求和
- 魔方机器人需要特制魔方吗_大开眼界:会玩魔方的机器人
- SQL语句--简单的函数书写举例(3)
- 插件式换肤框架搭建 - 资源加载源码分析
- echarts绘制3D旋转地球
- 华为云数据中心建设全面复工进行中,预计2021年投入使用
- 【MATLAB】matlab中clc,close,close all,clear,clear all作用区别
- 契约锁助力上市公司IPO申报 信息披露、重大事项决策等文件网上签
- 名悦集团介绍真正懂车的人不买白色的原因