一、 我们用一个Podfile文件管理多个项目的第三方库
1、首先在ProjectRelyDemo文件夹下创建我们的第一个主项目
2、使用CocoaPods管理第三方库(假设你已安装过Cocoapods)
- 在终端中切换到FirstProject目录,执行
pod init
,会在该目录下生产Podfile文件。 - 应用我们要用cocoapods管理workspace下所有的project和library,多以我们要把Podfile文件移动到ProjectRelyDemo目录下。
在执行pod install之前,我们先配置Podfile文件如下
platform :ios, '7.0' #忽略所有警告 inhibit_all_warnings! #指定workspace名称,没有则生成新的 路径是相对于Podfile路径(同下) workspace 'ProjectRelyDemo.xcworkspace' #配置默认的xcodeproj xcodeproj 'FirstProject/FirstProject' pod 'Masonry', '0.6.4'
执行
pod install
xcode目录如下
文件目录如下
3、添加第二个主项目
- 在xcode的左下角点击加号,选择
New Project..
,创建SecondProject
-注意选择的是workspace,而不是某一个project,pods,library
4、使用同一个Podfile文件管理两个项目
配置podfile文件内容一下
platform :ios, '7.0' #忽略所有警告 inhibit_all_warnings! #指定workspace名称,没有则生成新的 路径是相对于Podfile路径(同下) workspace 'ProjectRelyDemo.xcworkspace' #配置默认的xcodeproj 路径是相对于Podfile路径 xcodeproj 'FirstProject/FirstProject' target :FirstProject do xcodeproj 'FirstProject/FirstProject' pod 'Masonry', '0.6.4' end target :SecondProject do xcodeproj 'SecondProject/SecondProject' pod 'Masonry', '0.6.4' pod 'ReactiveCocoa','2.5' end
- 执行
pod install
:CocoaPods did not set the base configuration of your project 有这样的警告
解决方案:http://www.bubuko.com/infodetail-975930.html - 编译出现
ld: library not found for -lPods
错误
解决方案:对应项目 选择target-build Phases-Link Binaray With Libraries 删除 libPods.a(这是pod install上一次生产的,在多个项目时,则是libPods-FirstProject.a这样对应项目的名字)
至此我们的项目结构如下,第一步完成
二、 加入共享的 Business_lib
- 在Xcode中点击左下角的加号,选择New Project…,选择ios-Framework&Library- Cocoa Touch Static Librarys
给FirstProject添加Business_lib依赖(三步走)(SecondProject类比)
- 1、target-FirstProject-Build Phases- Target Dependencies 点击加号 选择Business_lib
- 2、Build Phases- Link Binary With Libraries 点击加号 选择libBusiness_lib.a
- 3、Build Settings-Header Search paths 添加
"${SRCROOT}/../Business_lib"
- Business_lib使用第三方库,配置Podfile文件内容如下
platform :ios, '7.0' #忽略所有警告 inhibit_all_warnings! #指定workspace名称,没有则生成新的 路径是相对于Podfile路径(同下) workspace 'ProjectRelyDemo.xcworkspace' #配置默认的xcodeproj 路径是相对于Podfile路径 xcodeproj 'FirstProject/FirstProject' target :FirstProject do xcodeproj 'FirstProject/FirstProject' pod 'Masonry', '0.6.4' pod 'ReactiveCocoa','2.5' end target :SecondProject do xcodeproj 'SecondProject/SecondProject' pod 'Masonry', '0.6.4' pod 'ReactiveCocoa','2.5' #library中使用工程中必须添加,否在报错"_OBJC_CLASS_$", referenced from: end target :Business_lib do xcodeproj 'Business_lib/Business_lib' pod 'ReactiveCocoa','2.5' end
至此我们的项目结构如下,第二步完成
三、 添加不涉及业务的Base_lib
- 创建方式 同Business_lib,给Business_lib添加Base_lib的依赖也同上
不同之处在于 :只在FirstProject -build Settings-Header Search Path添加”${SRCROOT}/../Base_lib”,另外Build Phases的配置无需执行
至此我们的项目结构如下,第三步完成
相关知识点
Xcode 的一些环境变量
SRCROOT :~/WorkSpace/Demo/PojectRelyDemo/FistProject
SRCROOT 代表项目根目录下PROJECT_DIR:~/WorkSpace/Demo/PojectRelyDemo/FistProject
PROJECT_DIR 代表项目所在路径
即:SRCROOT宏和PROJECT_DIR宏都指xxx.xcodeproj所在的父目录
Demo地址