20180115-Xcode创建多个工程协同开发
今天研究了一下在Xcode中创建多个工程,达到模块化的目的的同时,实现多个相似项目的协同开发,最主要的是可以实现多工程连编。项目的效果如下:
接下来创建一个这样的项目,以及他们之间的通信
1.建一个文件夹MyProject(这是本人采用的文件夹)
2.在MyProject文件夹下创建一个工作空间MyWorkSpace
3.在工作空间MyWorkSpace创建一个项目MyApp01添加到MyWorkSpace
4.创建静态库MyAccountSDK添加到MyWorkSpace工作空间下,实现联编。
1.创建一个工作空间MyWorkSpace
在Xcode里面,创建一个工作空间MyWorkSpace,并将其放下MyProject文件夹下(名字随便命名),具体如下:File->New->Workspace
创建完工作空间MyWorkSpace后的工程如下:
这样我们的工作空间就创建完毕了,接下来在MyWorkSpace工作空间下添加工程和静态库.a
2.在工作空间MyWorkSpace下添加工程MyApp01
在工作的空间的Xcode文件夹中,File->New->Project,然后注意要指定Workspace为你创建的MyWorkSpace工作空间下,这样MyApp01工程就添加到MyWorkSpace中了
选择Single View App,然后输入工程名字
输入工程名称,本项目使用MyApp01(名称随意),如下图
将工程添加到MyWorkSpace工作空间下,如下图:
3.使用第2步可以继续往MyWorkSpace中添加其他工程,下面不在赘述,工作空间MyWorkSpace又创建了MyApp02工程,这样实现了Xcode同时管理了两个工程,MyApp01和MyApp02,效果如下:
4.建立一个静态库.a添加到MyWorkSpace工作空间下,实现连编
项目使用多工程的目的不在于可以创建多个项目,而是在于可以实现多个工程的连编。下面我们创建一个名为MyAccountSDK的静态.a库,然后将其添加到工作空间MyWorkSpace中
选择Cocoa Touch Static Library
步骤类似第2步骤,这里不在详细赘述
创建后的项目结构如下:
接下来在MyAccountSDK中MyAccountSDK类中创了一个类方法
+ (void)sayHelloWorldFromProjectName:(NSString *)projectName;
,然后分别在MyApp01和MyApp02工程中调用该类方法。
此时在MyApp01的ViewController中导入MyAccountSDK类,并调用类方法+ (void)sayHelloWorldFromProjectName:(NSString *)projectName;编译你会发现报错,提示MyAccountSDK文件不存在
解决办法:
此时在编译,你会发现还会报错,提示没有找到sayHelloWorldFromProjectName方法
解决办法如下:
选择刚才添加到MyWorkSpace工作空间的静态库.a文件,即libMyAccountSDK.a
注意(在运行工程之前要先编译一个静态库.a)要不会报错,提示xxxx.a文件找不到,此时再次编译,你回奇迹般的运行起来了,下面是见证奇迹的时刻,运行结果如下:
小结:
上述截图中调用MyAccountSDK类中的类方法sayHelloWorldFromProjectName时,细心的你会发现忘记传参数了,笔误啊,这里就不该截图了,望见谅,大家注意啊,否则会一直报错,如果项目中使用到了Framework时,需要在工程中Build Setting->Framework Search Path中配置Framework中所在的静态库.a路径,我的项目使用一个单独的工程管理第三方库,所以要配置Framework Search Path
排版不是很美观,不喜勿喷啊!
20180115-Xcode创建多个工程协同开发的更多相关文章
- SDK 开发 .a .framework .bundle (xcode引用) 依赖sdk工程
一. 静态库.a 1.创建静态库工程 Cocoa Touch Static Libray ,然后可以创建一个测试视图 TestView 2.暴露头文件 -> Build Phases--> ...
- App开发流程之创建项目和工程基本配置
我的开发环境为:Mac OS X EI Capitan(10.11.6),Xcode 7.3.1 首先说明一下这个项目的初衷,我并非要创建一个完整的上架应用,旨在创建一个可运行的,通用配置.架构,提供 ...
- 如何在一个工作站里创建多个工程(同一个xcode下面创建多个工程)
第一步,理解: 怎么会有一个xcode下面创建两个工程这一说呢,一个工程代表一个项目,意思就是有两个项目了.错.其实在一个窗口下面并不是两个工程,而是一个workspace 即一个工作站.在工作站里面 ...
- [Xcode]使用target进行协同开发
协同开发时候发现难免会因为某些条件宏导致上传到SVN的代码影响到其他同时,但是每一次去修很多条件编译也不是很方便,所以可以通过新建自己的target来控制product. 一.创建自己的target: ...
- Eclipse创建Maven多模块工程Module开发(图文教程)
自己研究了下Eclipse用Maven多模块工程Module开发,跟大家分享一下! 功能模块来分Module,跟java的package类似,一般是按照的功能模块分module,比如:sso/cas/ ...
- Xcode创建Object-C程序
一. Xcode 环境安装 与 工程创建 1. 下载环境 相关资源下载 : -- IOS 相关资料下载页面 : https://developer.apple.com/devcenter/ios/i ...
- Xcode 创建静态库和动态库
1.linux中静态库和动态库区别: 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种. 静态库:这类库的名字一般是libxxx.a:利用静态函数库编译成的文件 ...
- Xcode——创建你自己的Framework
(注:以下内容是基于Xcode7.2.1操作的,版本不一,可能界面内容不同!) 如果你想将你开发的控件与别人分享,一种方法是直接提供源代码文件.然而,这种方法并不是很优雅.它会暴露所有的实现细节,而这 ...
- 【转】Android Studio中Git的配置及协同开发
一. Android Stutio配置git setting–>Version Control–>Git–>Path to Git executable中选择git.exe的位置 ...
随机推荐
- 20191010-8 alpha week 1/2 Scrum立会报告+燃尽图 06
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/8751 一.小组情况组长:贺敬文组员:彭思雨 王志文 位军营 杨萍队名:胜 ...
- legend3---lavarel常用artisan命令操作
legend3---lavarel常用artisan命令操作 一.总结 一句话总结: 帮助:php artisan可以调出帮助命令 1.npm安装后盾js? npm install hdjs node ...
- windows怎么远程访问deepin linux桌面
deepin linux端安装anydesk 1.首先点击打开任务栏上的“深度商店” 2.打开后搜索anydesk. 3.点击进入后按“安装”即可,安装完成即可在“深度商店”点击“打开”运行anyde ...
- 使用多块GPU进行训练 1.slim.arg_scope(对于同等类型使用相同操作) 2.tf.name_scope(定义名字的范围) 3.tf.get_variable_scope().reuse_variable(参数的复用) 4.tf.py_func(构造函数)
1. slim.arg_scope(函数, 传参) # 对于同类的函数操作,都传入相同的参数 from tensorflow.contrib import slim as slim import te ...
- java 深入HashTable
在java中与有两个类都提供了一个多种用途的hashTable机制,他们都可以将可以key和value结合起来构成键值对通过put(key,value)方法保存起来,然后通过get(key)方法获取相 ...
- sql四种连接方式
1.内连接(inner join)只有两个表相匹配的行才能在结果集中显示出来2.左连接(left join)以左表为主,左表所有的数据都会在结果集中出现,右表根据左表对应的数据显示,与左表匹配的数 ...
- [mysql]设置创建时间,更新时间未生效
问题描述: 新增一条case,create_time没有自动生成创建时间,值为空 原因 : create_time字段类型是DateTime(错误)而不是TIMESTAMP(正确) 解决办法: 把c ...
- Day06:抽象类、接口和内部类(上)
JVAV中的常量 什么是常量? 常量就是不会变化的数值 为什么需要常量? 方便使用(调用)不会变化的数值 特性 不能修改 所有对象共享 常量一定是成员 定义 public static final 类 ...
- JS点击img图片放大再次点击缩小JS实现 简单实用Ctrl+C+V就可以用
业务需要,从后台获取的图片列表,用img标签展示,用户需要查看大图.记录下来以便学习和参考.示例图如下: 放大之前: 放大之后: 点击后放大(由于图片高度超出了页面,需要通过overflow:auto ...
- 根据输入的整数n使得输出精确到小数n位
#include<iostream> #include<stdio.h> using namespace std; int main(){ int a,b,c; while(t ...