web-dev-qa-db-ja.com

XCodeでファイルのパスを表示するにはどうすればよいですか?

別の開発者のiPhoneプロジェクトをデバッグしようとしています。 Mac OS XLionでXCode4.2を使用しています。

プロジェクトをコンパイルしようとすると、一部のファイルが欠落しているというエラーが表示されます。これらのファイルは、プロジェクトナビゲータで赤で表示されます。ただし、これらのファイルが存在するはずの元のパスを見つけることができません。

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

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

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

2
JoeM

任意の要素を右クリックして、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 Applicationプロジェクトの出力です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
2
Daniel Beck

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

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

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

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

2
Dave Higgins

うーん、いや。ただし、「SharedLibs」フォルダーを右クリックして「Project1にファイルを追加」を選択すると、その人からファイルを取得してプロジェクトに追加できます。それはうまくいくでしょう。

0
thandasoru