theos 是初期ios插件开发者经常使用的工具,现在被集成在iosOpenDev的logos所实现,不需要再自己写makefile来实现
程序的自动编译。不过这里还是要简单的介绍一下如何写一个插件的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写法,很快就可以掌握技巧。
原文链接: https://www.cnblogs.com/qiezi/archive/2012/09/29/2708726.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/64229
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!