自从我升级到Xcode 11之后,我启动的每个新项目(包括框架)都无法在项目的第二次构建后进行编译。
例如,使用此命令包括SDL2:
#include <SDL2/SDL.h>
将导致此错误:
'SDL2/SDL.h' file not found
在第二次编译项目后。
在Xcode 10中创建的项目在Xcode 11中正常工作。
我尝试更改框架的嵌入选项,但没有设置有效。在所有Xcode 11版本(0-2.1)中都会发生此错误。
我正在使用macOS版本10.14.6
。
为什么会发生或如何解决?
答案 0 :(得分:1)
我终于找到了解决方案。我在此屏幕快照中将带有菜单的框架添加到了我的项目中:
在Xcode 9和10中,此操作与使用此菜单添加框架相同:
但是现在在Xcode 11中,这已经不一样了。使用第一个菜单添加框架会将框架从其原始路径复制到项目的build文件夹中,但由于某些原因,Xcode不会不复制框架中的Headers
文件夹。我认为这是一个错误,但似乎他们至少没有将其修复为Xcode版本11.2.1
。
因此,现在解决此问题的方法是使用第二张图片中的Build Phases
菜单添加框架。
答案 1 :(得分:0)
SDL2不是框架。而是静态或动态库。除非您当然要为SDL2使用其他定制框架。
通常会遇到两种情况:
我猜你正在做前者。如果是这种情况,则在Xcode 11中,默认系统头搜索路径可能已更改为不包含/ usr / local(或安装位置)。
要解决此问题,您首先应该找到SDL2库。尤其是包含文件的位置。
然后在“构建设置”中,转到“搜索路径:系统标题搜索路径”并在其中输入该路径。
请记住,#include
使用SDL2
作为路径的一部分,因此您不想将SDL2
部分放在路径中。这是我的目录结构的示例。因此,我为此输入的路径为$(PROJECT_DIR)/3rdParty/SDL2/include
。您可以在我的项目目录中看到一个3rdParty目录,该目录用于保存集成到项目中的3rd Party库。
您使用的是尖括号,这会利用系统路径。
请注意,您可能还必须更新针对SDL2的链接方式(即,它可能找不到)。
答案 2 :(得分:0)
我在XCode 11.1中遇到了同样的问题。我发现我需要在“构建设置/搜索路径”中将标题搜索路径添加到:
/Library/Frameworks/SDL2.framework/Versions/A/Headers
然后它起作用了。看来路径已更改。