我必须挖掘并更新我大约三年前上次工作的旧项目。它必须在PowerPC Mac上运行10.5。我有一台运行Xcode 3.1.2的PowerPC Mac。该应用程序使用Xcode项目中包含的外部框架作为依赖项。
当我尝试运行应用程序的发布版本时,它没有找到嵌入式框架。我查看了应用程序包,并验证了框架是否正确复制。 otool -L
告诉我,它正在寻找/Library/Frameworks/SM2DGraphView.framework/Versions/A/SM2DGraphView
。
正确运行的应用的调试版正在寻找(并找到)/Users/hyades/Development/SM2DGraphView 1.6 mine/SM2DGraphView Source/build/Debug/SM2DGraphView.framework/Versions/A/SM2DGraphView
。
我之前在英特尔和PowerPC机器上构建了应用程序的工作副本,他们都在寻找正确的路径:@executable_path/../Frameworks/SM2DGraphView.framework/Versions/A/SM2DGraphView
。
我已进入发布配置的构建设置,并将框架搜索路径设置为@executable_path/../Frameworks
,但otool -L
仍然表示正在查看/Library/Frameworks
。如何让Xcode告诉应用在@executable_path/../Frameworks
而不是/Library/Frameworks
中搜索框架?我以前不记得必须进行任何特定的项目设置。这与我最初用于开发的机器不同。它是否可能是全局Xcode设置?
答案 0 :(得分:1)
我从未弄清楚为什么行为发生了变化,但我确实弄明白了如何解决这个问题。我用这个命令添加了一个Run Script构建阶段:
install_name_tool -change /Library/Frameworks/SM2DGraphView.framework/Versions/A/SM2DGraphView @executable_path/../Frameworks/SM2DGraphView.framework/Versions/A/SM2DGraphView $TARGET_BUILD_DIR/$EXECUTABLE_PATH
现在我的应用程序在自己的框架中查找框架。