theos的makefile写法与其他linux/unix环境下的makefile写法大同小异,但是对于makefile不熟悉的在导入一些dylib或者framework的时候就会变得很蛋疼。

对于framework可以直接通过Frameworks和private frameworks来导入,但是dylib文件却不能那么简单的写进去,如果要引用zlib,那么如果写成xxx_LDFLAGS =  -zlib,虽然在编译的时候不会提示找不到对应的lib库但是却会提示找不到相关的符号。

这个东西的写法比较蛋疼,例如要调用libz.1.2.5.dylib ,那么写法是去掉前面的lib和最后的.dylib,然后将剩余部分拼到-l后面也就是上图中看到的那个样子:

xxx_LDFLAGS = -lz.1.2.5

详细信息可以参考这个页面:https://github.com/DHowett/theos/issues/15

一个makefile模板:

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

注释:

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/15

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

https://github.com/DHowett/theos

theos的makefile写法的更多相关文章

  1. Makefile之写demo时的通用Makefile写法

    Makefile之写demo时的通用Makefile写法[日期:2013-05-22] 来源:CSDN  作者:gqb666 [字体:大 中 小] 前面的一篇文章Makefile之大型工程项目子目录M ...

  2. 大型工程多个目录下的Makefile写法

    1.前言 目前从事于linux下程序开发,涉及到多个文件,多个目录,这时候编译文件的任务量比较大,需要写Makefile.关于Makefile的详细内容可以参考网上流传非常广泛的<跟我一起写Ma ...

  3. 【APUE】Chapter16 Network IPC: Sockets & makefile写法学习

    16.1 Introduction Chapter15讲的是同一个machine之间不同进程的通信,这一章内容是不同machine之间通过network通信,切入点是socket. 16.2 Sock ...

  4. linux下通用Makefile写法

    linux编译多个源文件的程序比较麻烦,这下就需要通用的Makefile了,编译的时候执行一下make命令就OK,下面介绍通用makfile的写法. 假设现在有以下源文件:file1.h file1. ...

  5. gcc编译, gdb调试, makefile写法

    //test.c: #include <stdio.h> int main(void) { printf("hello world!"); return 0; } == ...

  6. 转来的 cuda makefile 写法学习

    原文作者:FreeAquar 原文出处:http://www.cnblogs.com/FreeAquar/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给 ...

  7. Makefile写法

    概述 -- 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makef ...

  8. 常见makefile写法

    原文地址:blog.csdn.net/ghostyu/article/details/7755177 1.目标名称,摆脱手动设置目标名称 TARGET = $(notdir $(CURDIR)) al ...

  9. [Makefile]多目录Makefile写法

    最近需要写一个测试程序,这个测试程序需要集成一些功能,写在同一个文件看上去很不好,多个文件的Makefile又不是很熟,于是分享下面这篇文章 先介绍下,调试Makefile时,想知道某个变量的值,怎么 ...

随机推荐

  1. VC中Source Files, Header Files, Resource Files,External Dependencies的区别

    VC中Source Files, Header Files, Resource Files,External Dependencies的区别 区别: Source Files 放源文件(.c..cpp ...

  2. (转)单机上配置hadoop

    哈哈,几天连续收到百度两次电话,均是利好消息,于是乎不知不觉的自己的工作效率也提高了,几天折腾了好久终于在单机上配置好了hadoop,然后也成功的运行了一个用例,耶耶耶耶耶耶. 转自:http://w ...

  3. POJ 3233 Matrix Power Series (矩阵快速幂+二分求解)

    题意:求S=(A+A^2+A^3+...+A^k)%m的和 方法一:二分求解S=A+A^2+...+A^k若k为奇数:S=(A+A^2+...+A^(k/2))+A^(k/2)*(A+A^2+...+ ...

  4. SQL技术内幕-5 比较特殊 insert into 数据的写法

    ---比较特殊,第一次看到这种写法,记录下来 create table Student --学生成绩表 ( id int, --主键 Grade int, --班级 Score int --分数 ) ...

  5. VS2013试用期结束后如何激活

    在激活框中输入密钥:BWG7X-J98B3-W34RT-33B3R-JVYW9

  6. C#打开得到路径

    FolderBrowserDialog path = new FolderBrowserDialog(); path.ShowDialog(); MessageBox.Show(path.Select ...

  7. 计算机学院2014年“新生杯”ACM程序设计大赛

    1440: 棋盘摆车问题 对于输入n,k: 1.当n<k时,无满足的摆法 2.否则 第一个车可以排n*n个位置(即整个棋盘),第二个可排(n-1)*(n-1)个位置,…… 正如排列组合一样,车与 ...

  8. VS编译的QT程序发布时产生的AppCrash问题

    至少我碰到了三个情况,都是AppCrash错误(以下都指VS2008的Release的设置) 第1个错误,报错模块是程序自己 我使用VS2008 Team with SP1和QT4.86编译程序,一直 ...

  9. PHPStorm IDE 快捷键(MAC)

    ⌘——Command ⌃ ——Control ⌥——Option/Alt ⇧——Shift ⇪——Caps Lock fn——功能键就是fn 编辑 Command+alt+T 用 (if..else, ...

  10. android布局 及 布局属性

    Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> ...