轉自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》