使用非标准框架的Xcode警告ld:警告:找不到选项-F的目录

Max*_*eod 2 xcode linker frameworks ld

清理警告,我可以看到以下内容:

ld: warning: directory not found for option '-F/myPath/etc/myframework'
Run Code Online (Sandbox Code Playgroud)

这种情况发生在非标准的iOS框架中.如何消除警告?

Max*_*eod 13

检查链接器的手册页ld显示该-Fdir选项的以下详细信息:

将dir添加到要搜索框架的目录列表中.使用-F指定的目录按照它们在命令行上和默认搜索路径之前的顺序进行搜索.在Xcode4及更高版本中,-F和目录之间可以有一个空格.

果然,检查project.pbxproj显示丢失的文件夹:

FRAMEWORK_SEARCH_PATHS = (
                    "\"$(SDKROOT)/Developer/Library/Frameworks\"",
                    "\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"",
                    "\"myPath/etc/myframework\"",
                );
Run Code Online (Sandbox Code Playgroud)

所以,我认为整个框架的处理是他们避免了所有这些麻烦.嗯,标准框架也是如此,即SDK框架.除此之外,还需要更多的推文.从框架编程指南:

在非标准目录中定位框架

如果您的项目链接到未包含在任何标准位置的框架,则必须在Xcode找到其头文件之前明确指定该框架的位置.要指定此类框架的位置,请将包含该框架的目录添加到Xcode项目的"Framework Search Paths"选项中.Xcode将这个目录列表传递给编译器和链接器,它们都使用列表来搜索框架资源.

注意:框架的标准位置是/ System/Library/Frameworks目录和本地系统上的/ Library/Frameworks目录.

在Xcode的Build Settings中,有一个特定的Framework Search Paths条目.

$(SRCROOT)根据这个问题的答案添加通用的catch-all条目,可以完成业务并消除警告.哦,不要忘记将下拉设置为"递归".