web-dev-qa-db-ja.com

Xcode-フォルダー内のすべてのファイルを自動的にターゲットに追加する

Xcodeには、フォルダー内のすべてのファイルがターゲットによってコンパイルされることを指定する方法があります。例えば。 「Test」ターゲットは「Tests」フォルダ内のすべてのファイルを自動的にコンパイルしますが、「App」ターゲットは「Sources」フォルダ内のすべてをコンパイルします。

今日のやり方は、作成するたびにターゲットにファイルを追加することです。ファイルはすでに正しいフォルダに整理されているため、これは少しエラーが発生しやすく、冗長に感じられます。

ありがとう。

35
Akshay Rawat

Xcodeプロジェクトにファイルを追加する場合、ファイル選択ダイアログで選択できる2つのオプションがあります。

  1. 追加したフォルダのグループを作成します。
  2. 追加されたフォルダーのフォルダー参照を作成します。

2番目のオプションを選択する必要があります。この場合、Xcodeは常に、選択したフォルダーのファイルおよびサブフォルダーへの変更を反映します。

質問はずっと前に尋ねられたようですが、それはまだグーグル検索の最初の場所にあるので、うまくいけば誰かのために役立つでしょう。

8
Pavel

これはXcodeでは完全に壊れています。フォルダ参照によるフォルダの追加(@Pavelの答え)は正しいべきですが、機能しません。 https://stackoverflow.com/a/42600782/2518722 も参照してください。私はXcode 8.3(update:Xcode 11ではまだ壊れています)を使用していますが、以前にも多くの世代で壊れていました。

完全な回避策はありませんが、これは私が行うことです:

  1. ディレクトリをプロジェクトにドラッグします
  2. 尋ねられたら、次のようにオプションを設定します。
    • を選択して、追加したフォルダーのグループを作成します(つまり、あなたが正しいと思うものとは逆です)
    • 選択を解除必要に応じてファイルをコピーします(コピーではなくリンクが必要なため)。

これで、共有ディレクトリ内のファイルへの変更はすべてXcodeに反映されます。これは良いことです。

ただし、グループを更新する方法はありません。 (ここで明らかなものが足りない場合は誰か教えてください。)したがって、ディレクトリに新しいファイルを追加した場合、それらのファイルが表示される前に、Xcodeでグループを削除して再度追加する必要があります。これは明らかに不便ですが、少なくともユーザーエラーが発生しにくいわけではありません。手動でファイルを1つずつ追加するよりも優れています。

開発環境のこのような単純で必要な機能がここで壊れているのは信じられないことだと思います。

8
HughHughTeotl

これにより、複数のファイルをターゲットに追加できます。ただし、必要なファイルをフィルタリングするための作業が必要です。

プロジェクト>ターゲット>ソースのコンパイル>すべてのファイルを選択するcmd + A> .mファイルのフィルター>「追加」をクリック

他のリソースと同様に、

プロジェクト>ターゲット>バンドルリソースのコピー> .png .wav .strings .xib .storyboardなどのフィルター>「追加」をクリック

5
Hlung

この問題に対処しようとしているstackoverflowに関する他のいくつかの質問は次のとおりです。

スクリプトからXcodeプロジェクトにファイルを追加しますか?

xcodeプロジェクトに生成されたソースファイルを自動的に追加

2
ThomasW

タイプで並べ替えるだけなので、すべてのソースファイルが連続してリストされます。

次にShift+Cmdを押し、下矢印キーを押して、必要なすべてのファイルを選択します。

選択したら、すべてをチェックして特定のターゲットに追加できます:)

1
Moshe Rabaev

あなたが取ることができる1つのアプローチは、CMakeを使用してXcodeターゲットを生成することです。

詳細: CMake-フォルダー内のすべてのファイルをターゲットに自動的に追加しますか?

別の潜在的な手段は、カスタムビルドフェーズを構成することです。

0
justin

私の知る限り、これに関してXcodeにはバグはありませんであり、Xcode 未サポートこのようなメカニズム(ファイルの可用性に基づいてソースをターゲットに自動的に追加/削除する) -システム)。

グループのバリエーション(グループを表す-フォルダーと「通常の」グループ)では、プロジェクトツリーの外観を視覚的に柔軟にすることができます。リポジトリ内のソースの配置に関係なく、ディスク上のリポジトリを厳密にフォローするか、より「人間が読める」記述的なものにします。

私が使用したすべてのXcodeバージョンについて話している-つまり、v1.0b2からv11.3まで

いずれにせよ、私はそのようなメカニズムを新機能として持つことは素晴らしいことだと認めます(Apple)を誓約することができます)。

今それを行う方法は、入力がフォルダパスであり、その「生成されたコード」がそのフォルダ内のソースファイルのセットとなる、小さな新しい「コンパイラ」を構築することです。このような「コンパイラ」をビルドルールとしてターゲットに追加すると、目的の効果が得られる可能性があります。

これを掘り下げたい場合は、ProtobufをXcodeプロジェクトに追加する方法と、XcodeターゲットでCoreMLモデルを処理する方法に従ってください。

0
Motti Shneor

はい-フォルダー内のすべてのファイルを選択し、インスペクターウィンドウ([ターゲット]タブ)を使用します。

0
Paul R