2

Cleaning up warnings, I could see the following:

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

This was happening with non-standard iOS frameworks. How to eliminate the warning?

4

1 回答 1

13

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

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

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

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

所以,我认为框架的全部处理是避免所有这些麻烦。好吧,对于标准框架(即 SDK 框架)来说确实如此。对于其他任何事情,都需要更多的调整。从框架编程指南

在非标准目录中定位框架

如果您的项目链接到的框架不包含在任何标准位置中,则必须在 Xcode 找到其头文件之前显式指定该框架的位置。要指定此类框架的位置,请将包含该框架的目录添加到 Xcode 项目的“框架搜索路径”选项中。Xcode 将此目录列表传递给编译器和链接器,它们都使用该列表来搜索框架资源。

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

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

$(SRCROOT)根据这个问题的答案添加通用的包罗万象的条目完成了业务并消除了警告。哦,别忘了将下拉菜单设置为 "Recursive"

于 2013-11-13T15:17:28.570 回答