Theos MakeFile的内容

来源:互联网 发布:程序员工作内容 编辑:程序博客网 时间:2024/05/16 14:12
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_load100 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    endif107    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    endif111    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    endif115 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写法,很快就可以掌握技巧。