XCodeでファイルのパスを表示する方法は?


1

別の開発者のiPhoneプロジェクトをデバッグしようとしています。Mac OS X LionでXCode 4.2を使用しています。

現在、プロジェクトをコンパイルしようとすると、いくつかのファイルが欠落しているというエラーが表示されます。これらのファイルは、Project Navigatorで赤で表示されます。しかし、これらのファイルがあるはずの元のパスを見つけることができません。

たとえば、プロジェクト名がProject1であるとします。開発者は、このプロジェクトのフォルダーの外に共有ライブラリーを持つフォルダーを持ち、プロジェクトでそれらを使用しました。XCodeでプロジェクトをロードすると、SharedLibsという別のフォルダーがあることがわかりますが、その中のすべてのファイルは赤です(そのフォルダーがハードドライブにないため)。

赤いファイルまたは何かをクリックして元のパスを見つける方法はありますか?不足しているファイルは一般的なサードパーティのライブラリであるため、正しいパスにフォルダを作成し、不足しているライブラリで埋めたいと思います。

助けてくれてありがとう。


1
ファイルのみが欠落している場合は、右クリックして[ Finderに表示 ]を選択できます。ファイルを配置するフォルダーを開きます。
ダニエルベック

これかもしれません。私はこのオプションをどのように見落としていたかわかりません。
JoeM

回答:


2

任意の要素を右クリックして、「Finderで表示」を選択できます。存在する最良の一致が表示されます。たとえば、ファイルのみが欠落している場合は直接の親フォルダー、直接の親フォルダーが欠落している場合はその親フォルダーなどが表示されます。


または、XcodeのAppleScripting機能を使用して、プロジェクト内のアイテムの完全なパスを決定できます。

AppleScript Editorを開き、次を貼り付けます。

set out to ""
tell application "Xcode"
    tell project "Fooo"
        repeat with g1 in groups
            set c1 to name of g1
            repeat with g2 in groups of g1
                set c2 to c1 & " » " & name of g2
                repeat with g3 in groups of g2
                    set c3 to c2 & " » " & name of g3
                    repeat with g4 in groups of g3
                        set c4 to c3 & " » " & name of g4
                        repeat with r4 in file references of g4
                            set out to out & c4 & " » " & name of r4 & "  ——— " & full path of r4 & "
"
                        end repeat
                    end repeat
                    repeat with r3 in file references of g3
                        set out to out & c3 & " » " & name of r3 & "  ——— " & full path of r3 & "
"
                    end repeat
                end repeat
                repeat with r2 in file references of g2
                    set out to out & c2 & " » " & name of r2 & "  ——— " & full path of r2 & "
"
                end repeat
            end repeat
            repeat with r1 in file references of g1
                set out to out & c1 & " » " & name of r1 & "  ——— " & full path of r1 & "
"
            end repeat
        end repeat
        repeat with r0 in file references
            set out to out & " » " & name of r0 & "  ——— " & full path of r0 & "
"
        end repeat
    end tell
end tell
out

プロジェクト名("Fooo")を変更して実行し、出力を確認します。通過するすべてのアイテムへの完全なパスが含まれます。ただし、プロジェクト構造によって異なります。上位4レベルのグループ(フォルダー)とそのファイル/フォルダー参照のみをトラバースします。

これは、新しく作成されたCocoaアプリケーションプロジェクトの出力ですCocoa

Cocoa » Document.xib » en  ——— /Users/danielbeck/Library/Autosave Information/Cocoa/Cocoa/en.lproj/Document.xib
Cocoa » MainMenu.xib » en  ——— /Users/danielbeck/Library/Autosave Information/Cocoa/Cocoa/en.lproj/MainMenu.xib
Cocoa » Supporting Files » InfoPlist.strings » en  ——— /Users/danielbeck/Library/Autosave Information/Cocoa/Cocoa/en.lproj/InfoPlist.strings
Cocoa » Supporting Files » Credits.rtf » en  ——— /Users/danielbeck/Library/Autosave Information/Cocoa/Cocoa/en.lproj/Credits.rtf
Cocoa » Supporting Files » Cocoa-Info.plist  ——— /Users/danielbeck/Library/Autosave Information/Cocoa/Cocoa/Cocoa-Info.plist
Cocoa » Supporting Files » main.m  ——— /Users/danielbeck/Library/Autosave Information/Cocoa/Cocoa/main.m
Cocoa » Supporting Files » Cocoa-Prefix.pch  ——— /Users/danielbeck/Library/Autosave Information/Cocoa/Cocoa/Cocoa-Prefix.pch
Cocoa » Document.h  ——— /Users/danielbeck/Library/Autosave Information/Cocoa/Cocoa/Document.h
Cocoa » Document.m  ——— /Users/danielbeck/Library/Autosave Information/Cocoa/Cocoa/Document.m
CocoaTests » Supporting Files » InfoPlist.strings » en  ——— /Users/danielbeck/Library/Autosave Information/Cocoa/CocoaTests/en.lproj/InfoPlist.strings
CocoaTests » Supporting Files » CocoaTests-Info.plist  ——— /Users/danielbeck/Library/Autosave Information/Cocoa/CocoaTests/CocoaTests-Info.plist
CocoaTests » CocoaTests.h  ——— /Users/danielbeck/Library/Autosave Information/Cocoa/CocoaTests/CocoaTests.h
CocoaTests » CocoaTests.m  ——— /Users/danielbeck/Library/Autosave Information/Cocoa/CocoaTests/CocoaTests.m
Frameworks » Other Frameworks » AppKit.framework  ——— /Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/AppKit.framework
Frameworks » Other Frameworks » CoreData.framework  ——— /Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/CoreData.framework
Frameworks » Other Frameworks » Foundation.framework  ——— /Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/Foundation.framework
Frameworks » Cocoa.framework  ——— /Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/Cocoa.framework
Frameworks » SenTestingKit.framework  ——— /Developer/Library/Frameworks/SenTestingKit.framework
Products » Cocoa.app  ——— /Users/danielbeck/Library/Developer/Xcode/DerivedData/Cocoa-crnllmegeptunwfweqdljydsrsnq/Build/Products/Debug/Cocoa.app
Products » CocoaTests.octest  ——— /Users/danielbeck/Library/Developer/Xcode/DerivedData/Cocoa-crnllmegeptunwfweqdljydsrsnq/Build/Products/Debug/CocoaTests.octest

もちろん、スクリプトをプロジェクトの構造に合わせて調整し、アイテム階層を抜けて不足しているアイテムまでたどることができます。この場合、ファイルのフルパスがAppleScriptの出力として表示されます。

tell application "Xcode"
    tell project "Fooo"
        tell group "Frameworks"
            tell group "Other Frameworks"
                full path of file reference "aaa"
            end tell
        end tell
    end tell
end tell

1
はい、これは明らかに再帰的です。AppleScriptに、それを行うために作成した関数のパラメーターとして渡されたXcode型を認識させることができませんでした。それに取り組んでいます。
ダニエルベック

2

Project Navigatorで赤いファイルを強調表示します。ウィンドウの反対側のユーティリティパネルで、ファイルインスペクターを選択します。上部には、IDとタイプがあります。2番目のサブセクションでは、ファイルパスを扱います。ポップアップは、パスを表示するさまざまな方法を提供します(さまざまな「相対」オプションと絶対パスオプション)。右側には小さな「ウィンドウ」アイコンがあり、クリックしてファイルを選択できます(正しいアイコンがどこにあるかがわかったら)。右矢印アイコンは、ファイルがあればそこに移動します(Finderで表示するのとほぼ同じです)。

そこを探している場所についての手がかりを得るかもしれませんし、最後にそれらがどこにあるかを考えたかもしれません。

最初に、このファイルが含まれているグループに関するこのパネルの内容を確認することをお勧めします。特定のグループに追加された新しいファイルのデフォルトの場所をここで設定できます。注:グループにパスが設定され、その中にいくつかのファイルがある場合、そのパス設定はそのままにしておくのが最善です。グループ内のすべてが赤の場合、グループのフォルダーに適切なパスを設定すると、すべての赤のファイルを1回で修正できます。

確かに言うことはできませんが、この方法で行うと、ファイルが消える前に設定したバインディングが保持されることを覚えているようです。プロジェクトがそこにあるべきだと考えるものと一致すると仮定します。


0

ええと ただし、「SharedLibs」フォルダーを右クリックし、「Project1にファイルを追加」を選択することにより、ユーザーからファイルを取得してプロジェクトに追加できます。動作します。


SharedLibsフォルダーの場所を知る方法はありますか?親フォルダーと同じ名前のフォルダーが多数あります。主な問題は、PRoject1 dir以外の多くのフォルダーがプロジェクトに組み込まれ、それらの一部が同じ名前を持つことです。
JoeM

これらのファイルがリモートサーバー上にあることは言うまでもなく、いくつかの新しいファイルを追加することに消極的です。それでも、プロジェクトはかなり大きく(数ギグ)、必要のない場合はダウンロードしたくありません。
JoeM

1
Finderで表示(Xcode 4)またはFinderで表示(Xcode 3.x)を使用できます。お役に立てば幸いです。
タンダーソル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.