如何在Xcode工作区中实现两个项目间的类文件访问?
在Xcode工作区中让ProjectB访问ProjectA的文件(不转库、不冗余)
以下是具体操作步骤,完全满足你保持项目独立、不冗余文件的需求:
确认工作区结构
确保ProjectA和ProjectB在同一个Xcode工作区中。如果还没加入,直接把ProjectA的.xcodeproj文件拖进ProjectB的工作区窗口,拖的时候选择Create groups,不要勾选"Copy items if needed",这样只会创建文件引用,不会复制源文件。添加目标依赖
选中ProjectB的目标,切换到Build Phases标签页,找到Target Dependencies模块,点击+按钮,选择ProjectA对应的编译目标。这样Xcode会保证先编译ProjectA,再编译ProjectB,避免依赖顺序问题。配置头文件搜索路径
选中ProjectB的目标,切换到Build Settings标签页,搜索Header Search Paths,添加ProjectA的根目录路径。比如如果ProjectA和ProjectB在工作区同级目录下,就填$(SRCROOT)/../ProjectA,记得勾选Recursive选项,这样Xcode会递归搜索ProjectA下所有子目录的头文件(不管是.h还是.hpp都适用)。设置ProjectA的文件可见性
- 对于Objective-C的
.h文件:选中ProjectA的目标,进入Build Phases的Headers模块,把需要让ProjectB访问的.h文件(比如Test.h)从Private拖到Project组里(Project组允许同一工作区内的其他项目访问,Public是对外完全公开,这里用Project足够)。 - 对于C++的
.hpp文件:不需要额外配置Headers组,只要头文件搜索路径正确,就能直接引用。 .m和.cpp文件不需要做任何暴露操作,只要它们已经包含在ProjectA的编译目标里,ProjectB会通过依赖链接自动获取实现。
- 对于Objective-C的
在ProjectB中引用文件
- Objective-C代码里直接写
#import "Test.h" - C++代码里直接写
#include "Test.hpp" - 如果是Objective-C项目调用C代码,注意把包含
.hpp的代码放在.mm文件中,或者在.h文件里用#ifdef __cplusplus包裹C相关的引用,避免编译报错。
- Objective-C代码里直接写
内容的提问来源于stack exchange,提问作者ΩlostA
相关产品推荐
相关产品推荐

