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的内容相关推荐

  1. Theos(六):官方文档

    目录 Home(主页) Installation(安装) Installation iOS(iOS 平台上的安装) Installation macOS(macOS 平台上的安装) Installat ...

  2. 浅显易懂 Makefile 入门 (09)— include 文件包含、MAKECMDGOALS

    1. include文件包含 当 make 读取到 include 关键字的时候,会暂停读取当前的 Makefile,而是去读 include 包含的文件,读取结束后再继读取当前的 Makefile ...

  3. makefile 中 =, :=, ?=, +=的区别

    在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验 新建一个Makefile,内容为: ifdef DEFINE_VRE     VRE ...

  4. 自动生成Makefile的全过程详解

    automake/autoconf入门 作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便.一般情况下,大家都是手工写一个简单Makefil ...

  5. Ubuntu下makefile及gcc生成静态库动态库的简单使用举例

    环境:Ubuntu-13.10  32位(虚拟机).gcc4.8.1 首先创建一个test_makefile_gcc文件夹,此test_makefile_gcc文件夹下包括:src文件夹用于存放源文件 ...

  6. 详解linux下auto工具制作Makefile源码包(制作篇)

    2019独角兽企业重金招聘Python工程师标准>>> 详解linux下auto工具制作Makefile源码包(制作篇) 水木杨 一.     概述 为了更好的制作configure ...

  7. 向大家推荐一个C/C++通用Makefile

    在使用 Makefile 之前,只需对它进行一些简单的设置即可:而且一经设置,即使以后对源程序文件有所增减一般也不再需要改动 Makefile.因此,即便是一个没有学习过 Makefile 书写规则的 ...

  8. Makefile中指示符“include”、“-include”和“sinclude”的区别

    指示符"include"."-include"和"sinclude" 如果指示符"include"指定的文件不是以斜线开 ...

  9. linux内核kconfig objs,linux内核中Kconfig和Makefile 详解

    内核源码树的目录下都有两个文档 Kconfig (2.4版本是Config.in)和Makefile.分布到各目录的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录 ...

最新文章

  1. oracle occi出现乱码,linux下occi操作oracle数据库,中文乱码的问题
  2. 【CV】大盘点 | 性能最强的目标检测算法
  3. QT、QTE、qtopia区别
  4. 从零开始编写自己的C#框架(18)——Web层后端权限模块——菜单管理
  5. 苹果叫停经销商供货拼多多?官方回应:系谣言 所售新款iPhone均为正品
  6. leetcode记录-回文数
  7. mysql如何开启对外连接?
  8. OpenCV Viz 3D虚拟空间模块
  9. 20200203_selenium爬取百度新闻
  10. Kubernetes Pod 健康检查机制 LivenessProbe 与 ReadinessProbe
  11. Photoshop 抠图方式
  12. Excel表格多个工作表数据汇总求和
  13. 魔方机器人需要特制魔方吗_大开眼界:会玩魔方的机器人
  14. SQL语句--简单的函数书写举例(3)
  15. 插件式换肤框架搭建 - 资源加载源码分析
  16. echarts绘制3D旋转地球
  17. 华为云数据中心建设全面复工进行中,预计2021年投入使用
  18. 【MATLAB】matlab中clc,close,close all,clear,clear all作用区别
  19. 契约锁助力上市公司IPO申报 信息披露、重大事项决策等文件网上签
  20. 名悦集团介绍真正懂车的人不买白色的原因

热门文章

  1. 爱普生Epson L15158 一体机驱动
  2. php判断某年是不是闰年,PHP怎么判断一年是否为闰年?
  3. 网络安全 - 信息收集
  4. 我的网站:攻壳机动队,再生侠,吸血莱恩(fan site)
  5. 【AD】Altium Designer哪里下载和导入元件库_图文教程
  6. 数据分析-数据类型及数据收集和整理方法-04
  7. 批处理替换网易云音乐UnblockNeteaseMusic的Ip
  8. vue TDK seo便于搜索引擎爬虫搜索,网站优化排名
  9. Android Retrofit★
  10. 维盟虚拟服务器,「包教会」WayOS路由PPPoE设置教程!