Xcode 13 workspace跨项目无法交叉引用头文件问题求助
Xcode 13.4.1 工作区跨C++动态库项目头文件找不到问题修复
Xcode 13 版本开始调整了工作区默认头文件检索逻辑,旧版本拖拽项目进工作区即可自动关联头文件的规则不再生效,按以下步骤配置即可解决table.hpp找不到的编译错误:
- 选中
tester测试项目对应的编译target,打开Build Settings配置面板 - 搜索定位到
Header Search Paths配置项,根据你的ADT库头文件存放方式二选一添加路径:- 源码路径关联:直接将ADT项目中存放
table.hpp的头文件根目录拖拽到配置项的输入框中,Xcode会自动生成基于$(SRCROOT)的相对路径,将路径右侧的检索层级选项从non-recursive改为recursive,支持递归扫描子目录下的头文件 - Framework产物关联:如果你的ADT动态库已经把头文件标记为Public并纳入Framework打包流程,直接添加路径
$(BUILT_PRODUCTS_DIR)/libADT.framework/Headers,同样设置为recursive即可,不需要绑定源码目录路径
- 源码路径关联:直接将ADT项目中存放
- 同面板下继续搜索两个配置项调整参数:
- 将
Always Search User Paths的值设置为YES - 将
Allow Non-modular Includes in Framework Modules的值设置为YES,绕过Xcode 13新增的非模块化C++头文件引用拦截
- 将
- 按下快捷键
Cmd+Shift+K清空项目编译缓存,重新执行编译即可
注意:如果配置后依然报错,检查ADT项目的target build phases中,
table.hpp是否被误加入到了Private或者Project头文件层级,没有被标记为Public的头文件不会被打包进Framework的Headers目录,会导致产物路径检索失败。
内容的提问来源于stack exchange,提问作者Nuno
相关产品推荐
相关产品推荐

