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

时间:2013-11-13 15:17:29

标签: xcode frameworks linker ld

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

ld: warning: directory not found for option '-F/myPath/etc/myframework'

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

1 个答案:

答案 0 :(得分:13)

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

  

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

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

FRAMEWORK_SEARCH_PATHS = (
                    "\"$(SDKROOT)/Developer/Library/Frameworks\"",
                    "\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"",
                    "\"myPath/etc/myframework\"",
                );

所以,我认为整个框架的处理是他们避免了所有这些麻烦。嗯,对于标准框架,即SDK框架,都是如此。除此之外,还需要更多的推文。来自Framework Programming Guide

  

在非标准目录中查找框架

     

如果您的项目链接到任何未包含的框架   在标准位置,您必须明确指定位置   Xcode之前的那个框架可以找到它的头文件。要指定   这样一个框架的位置,添加包含的目录   Xcode的“框架搜索路径”选项的框架   项目。 Xcode将此目录列表传递给编译器和   链接器,它们都使用列表来搜索框架资源。

     

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

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

根据this question的答案添加$(SRCROOT)的通用catch-all条目,完成了业务并消除了警告。哦,不要忘记将下拉菜单设置为“Recursive”