iPhone开发进阶(4) --- 使用Makefile自动编译iPhone程序

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 21:57 点击:

Xcode 也支持以命令行形式来编译 iPhone 程序。另外还可以手动的编写 Makefile 文件,实现编译→安装的自动化批处理过程。如果你习惯了命令行的操作方式(linux,unix),那么这样的操作还是很方便的。

首先看看 Xcode 的命令行格式:
 xcodebuild -target Project_Name
xcodebuild install -target Project_Name


下面我们来实现程序的编译,并通过 ldid 转换编码格式,最后用 ssh 将编译好的程序安装到 iPhone 上的 /Applications/目录下。

首先安装 ssh 的公开密匙到 iPhone 上
1). 在Mac的终端上产生密匙

 ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/xxxx/.ssh/id_rsa):
Created directory '/home/xxxx/.ssh'.
Enter passphrase (empty for no passphrase): xxx
Enter same passphrase again: xxx
Your identification has been saved in /home/xxxx/.ssh/id_rsa.
Your public key has been saved in /home/xxxx/.ssh/id_rsa.pub.
The key fingerprint is:
e4:e8:b7:05:06:b3:f0:ff:af:13:fc:50:6a:5b:d1:b5 xxxx@localhost.localdomain


过程中会提问你通行证(passphrase),输入你常用的秘密。

2). 在 iPhone 上创建.ssh目录(iPhone的IP地址是10.0.2.2)

1 ssh root@10.0.2.2 'mkdir -p .ssh'


如果问道你iPhone root password,输入 alpine。

3). 拷贝刚才生成的公开密匙到 iPhone

1 cat ~/.ssh/id_rsa.pub | ssh root@10.0.2.2 'cat >> .ssh/authorized_keys'


如果问道你iPhone root password,输入 alpine。

4). 在 iPhone 上编辑 /etc/ssh/sshd_config 文件

 #将

#StrictModes yes
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys

#替换为

StrictModes no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys


5). 重新启动iPhone

接下来,编译生成ldid工具
 wget http://svn.telesphoreo.org/trunk/data/ldid/ldid-1.0.610.tgz

tar -zxf ldid-1.0.610.tgz

# 如果是 PowerPC 下载下面的补丁
# wget -qO- http://fink.cvs.sourceforge.net/viewvc/*checkout*/fink/dists/10.4/unstable/crypto/finkinfo/ldid.patch?revision=1.1 | patch -p0

cd ldid-1.0.610

g++ -I . -o util/ldid{,.cpp} -x c util/{lookup2,sha1}.c

sudo cp -a util/ldid /usr/bin


最后,让我们看看Makefile中都有什么
项目中的文件如下所示:

Classes : source code (.m .c .cpp etc)

Resources : png file and other support files

Project folder : *.xib Info.plist
Makefile: Select all

PREFIX  = arm-apple-darwin9-

###/////////////////////////////////////////////////////////////
###                      Executable files
###/////////////////////////////////////////////////////////////

CC      = $(PREFIX)gcc
CXX     = $(PREFIX)g++
LD      = $(CC)
AR      = $(PREFIX)ar
STRIP   = $(PREFIX)strip
OBJCOPY = $(PREFIX)objcopy

####################################################################################

## debug/release
DEBUG   ?= n

DEVEL   ?= n

## SDK版本
SDKVER    = 3.1.2

## iPhone的IP地址
IPHONE_IP = 10.0.2.2

## iPhone SDK路径
IPHONESDK = /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS$(SDKVER).sdk

## include 路径
INCPATH += -I"$(IPHONESDK)/usr/include"
INCPATH += -I"/Developer/Platforms/iPhoneOS.platform/Developer/usr/lib/gcc/arm-apple-darwin9/4.2/include/"
INCPATH += -I"/Developer/Platforms/iPhoneOS.platform/Developer/usr/include/"
INCPATH += -I"/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator$(SDKVER).sdk/usr/include"

##

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • Lexical or Preprocessor Issue 'xxx.h
    • ios学习笔记(二)xcode 4.3.2下实现基本交互
    • ios版本的helloworld
    • iphone(object-c) 内存管理(3) 有效的内存管理 前半部分
    • ios学习笔记(一)xcode 4.3.2下创建第一个ios项目
    • IOS类似iphone通讯录TableView的完整demo【附源码】
    • UITableView一些方法
    • [iPhone中级]iPhone团购信息客户端的开发 (二)
    • iphone(object-c)内存管理(1)
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1