最近项目收到一个新需求,需要添加子工程分解项目一部分功能,👇将学到的一些东西分享下;
示例:
主工程(AddSubProjectDemo)
子工程(subProject)
1. 创建主工程(AddSubProjectDemo)以及子工程(subProject)
这里注意一下子工程创建的时候是Cocoa Static Library
;

两个工程创建完毕如图:

2.添加子工程及其依赖
2.1 子工程拖进主工程文件目录中:

2.2 打开主工程添加子工程
这里可以选择Drag或Add File to "AddSubProjectDemo",结束后如图:

2.3 在主工程中添加子工程依赖(.a文件)
在工程target -> Build Phases -> Link Binary With Libraries
中添加libsubProject.a

2.4 在主工程中添加子工程头文件
在工程target -> Build Settings -> Search Paths -> Header Search Paths
中加入子文件目录;

关于
Header Search Paths
这里说明一下:
$(inherited)
target在设置自己路径的时候如果加了这个,那么就是继承project里设置的路径。如果不需要继承就不加,要不然乱加有可能整混导致路径错误。- 带引号的路径和不带引号的路径
带引号主要是预防路径里有空格导致本来一个路径变成了两个路径,因为空格分开就被解析位两个路径,所以最好路径带上引号。$(SRCROOT) / $(PROJECT_DIR)
基本没啥区别,都是指向*.xcodeproj
所在的路径recursive
遍历该目录,non-recursive
默认路径设置;不遍历该目录。
工程环境配置好后,本例在子工程加了一个类方法打印,主工程回调,最终效果如下:

附上demo工程:
demo下载
网友评论