THEOS makefile

轉自https://www.h4ck.org.cn/2013/07/theos-makefile/html

theos的makefile寫法與其餘linux/unix環境下的makefile寫法大同小異,可是對於makefile不熟悉的在導入一些dylib或者framework的時候就會變得很蛋疼。

對於framework能夠直接經過Frameworks和private frameworks來導入,可是dylib文件卻不能那麼簡單的寫進去,若是要引用zlib,那麼若是寫成xxx_LDFLAGS =  -zlib,雖然在編譯的時候不會提示找不到對應的lib庫可是卻會提示找不到相關的符號。linux

這個東西的寫法比較蛋疼,例如要調用libz.1.2.5.dylib ,那麼寫法是去掉前面的lib和最後的.dylib,而後將剩餘部分拼到-l後面也就是上圖中看到的那個樣子:c++

xxx_LDFLAGS = -lz.1.2.5

詳細信息能夠參考這個頁面:https://github.com/DHowett/theos/issues/15git

一個makefile模板:github

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#
 # Use this makefile to compile service project.
 # When change SDK or add new files ,re-edit values below.
 # zhj
 # 2012-07-17
 # txtw
 #
 
 export THEOS=/opt/theos/
 export SDKVERSION=5.1
 export THEOS_DEVICE_IP=10.0.2.3
 #192.168.1.157
 #10.0.2.2
 export CURRENT_VERSION = 1104
 
 include theos/makefiles/common.mk
 
 TWEAK_NAME = service
 
 RESOURCE_DIR = Resources
 
 DEBUG = 1
 
 #SUBPROJECTS=servicePreferences
 
 #編譯單元
 #
 #
 
 
 #編譯 ----------------------------ASIHTTPRequest--------------------
 service_FILES += ASIHTTPRequest/ASIAuthenticationDialog.m
 service_FILES += ASIHTTPRequest/ASIDownloadCache.m
 service_FILES += ASIHTTPRequest/ASIFormDataRequest.m
 service_FILES += ASIHTTPRequest/ASIHTTPRequest.m
 service_FILES += ASIHTTPRequest/ASIInputStream.m
 service_FILES += ASIHTTPRequest/ASINetworkQueue.m
 service_FILES += ASIHTTPRequest/Reachability.m
 
 #編譯 ----------------------------Encoder---------------------------
 service_FILES += Encoder/CrypHelper.m
 service_FILES += Encoder/GTMBase64.m
 service_FILES += Encoder/NSData+Base64.m
 service_FILES += Encoder/NSString+MD5Addition.m
 service_FILES += Encoder/UIDevice+IdentifierAddition.m
 
 #編譯 ----------------------------TBXML-----------------------------
 service_FILES += TBXML/NSDataAdditions.m
 service_FILES += TBXML/TBXML.m
 
 #編譯 ----------------------------Regex-----------------------------
 service_FILES += Regex/RegexKitLite.m
 
 #編譯 ----------------------------Constant--------------------------
 service_FILES += Constant/Constant.m
 service_FILES += Constant/UserDefaults.m
 
 #編譯 ----------------------------SOAP-----------------------------
 service_FILES += SOAP/Head.m
 service_FILES += SOAP/Body.m
 
 #編譯 ----------------------------MsgService-----------------------------
 service_FILES += MsgService/MsgService.m
 service_FILES += MsgService/MessageInfo.m
 service_FILES += MsgService/Msgs/NetBrain.m
 service_FILES += MsgService/Msgs/KeepAliveReturnMsg.m
 service_FILES += MsgService/Msgs/DevBindReturnMsg.m
 service_FILES += MsgService/Msgs/FamilyPhoneMsg.m
 service_FILES += MsgService/Msgs/LocationMsg.m
 
 #編譯 ----------------------------ParseXML-----------------------------
 service_FILES += ParseXML/ParseXML.m
 
 
 #編譯 ----------------------------Command---------------------------------
 service_FILES += Command/TxtwCommand.m
 
 #編譯 ----------------------------BaiduMap---------------------------------
 service_FILES += BaiduMap/MapPointAnnotion.m
 
 #編譯 ----------------------------service-----------------------------
 service_FILES += service/service.mm
 service_FILES += Tweak.xm
 
 
 #鏈接單元
 #
 #鏈接 ----------------------------framework--------------------------
 service_FRAMEWORKS = Foundation UIKit QuartzCore Foundation CoreFoundation CoreGraphics  MobileCoreServices
 service_FRAMEWORKS += SystemConfiguration  CFNetwork CoreTelephony CoreLocation MapKit
 
 
 #鏈接 ----------------------------dylib------------------------------
 service_LDFLAGS = -lxml2 -lz -licucore -lgcc -lgcc_eh -lstdc++ 
 service_LDFLAGS += -L./BaiduMap/inc -R./BaiduMap/inc/ -lbaidumapapi
 
 #編譯器 ----------------------------------------------------------
 #service_CFLAGS += -std=c99 
 #service_CFLAGS += -all_load
 
 #資源文件 ----------------------------------------------------------
 internal-package::
    ifneq ($(wildcard $(RESOURCE_DIR)/*.png), )
     mkdir -p $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences/$(TWEAK_NAME)
     cp $(RESOURCE_DIR)/*.png $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences/$(TWEAK_NAME)/
    endif
    ifneq ($(wildcard $(RESOURCE_DIR)/*.lproj), )
     mkdir -p $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences/$(TWEAK_NAME)
     rsync -avC $(RESOURCE_DIR)/*.lproj $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences/$(TWEAK_NAME)
    endif
    ifneq ($(wildcard $(RESOURCE_DIR)/$(TWEAK_NAME).plist), )
     mkdir -p $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences/$(TWEAK_NAME)
     cp $(RESOURCE_DIR)/$(TWEAK_NAME).plist $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences/$(TWEAK_NAME)
    endif
 
 include $(THEOS_MAKE_PATH)/tweak.mk

註釋:api

1
2
3
4
5
6
7
8
9
10
11
9~14行屬於系統配置部分:其中11行是調試設備的IP地址
  16行是引入經常使用的通常模板
  18行工程名稱
  20行存放資源文件的本地目錄名稱:能夠自定義 主要是在生成包拷貝時使用
  22行是不是調試狀態:經常使用的一個宏設置是否顯示NSLog 區分是debug仍是release 也能夠本身嘗試設置其餘宏變量
  26~83行是編譯所須要的的源文件
  88~90行是sdk中的framework
  93~95行是須要的一些系統靜態庫和第三方靜態庫
  97~99行是編譯器參數設置
  101~114行是拷貝資源文件
  116行是引入tweak模板

參考連接:安全

https://github.com/DHowett/theos/issues/15this

http://www.cnblogs.com/qiezi/archive/2012/09/29/2708726.htmlspa

https://github.com/DHowett/theosdebug

原創文章,轉載請註明: 轉載自 火星信息安全研究院

本文標題: 《theos Makefile》

本文連接地址: https://www.h4ck.org.cn/2013/07/theos-makefile/

相關文章
相關標籤/搜索