14

コンパイル時にビルドで更新されない独自の拡張子を持つバイナリ ファイルがいくつかあります。この同じプロジェクトの Xcode の以前のバージョンでは、ファイルが変更されたことを検出し、このバージョンで行う必要があるように「クリーン」を実行する必要はほとんどありませんでした。もちろん、これにはさらに多くの時間がかかります。誰かが Xcode 5 で何が変更されたか、および/またはこれについて何ができるかを教えていただければ幸いです。

プロジェクトの詳細は含めませんでした。これは、リソース フォルダーにカスタム拡張子を持つプロプライエタリなバイナリ ファイルであり、前回のコンパイル以降に変更されると自動的に更新されていたからです。特定のプロジェクト設定が必要な場合は、喜んで提供します。

プロジェクトディレクトリにコピーされるだけでなく、フォルダへの参照である一種の「青い」リソースフォルダを使用しています。この特定のリソース フォルダーの種類が何と呼ばれているか忘れてしまったため、お詫び申し上げます (参照と推測しています)。

バージョン: Xcode 5 (5A1413)

アップデート:

これは、fopen、fwriteなどを使用してプログラムで変更したファイルを参照している場合にのみ発生し、OSXのファイルエディターを使用してファイルを再保存すると(実際には変更せずに)、Xcodeは変更されたと見なします。

現在、FSEvents を調べて、この基礎となる API を使用する必要があるかどうかを確認していますが、これでフラグを設定する方法はまだ正確にはわかりません。

アップデート:

簡単なテストとして、同じファイルを取得し、次の方法で再保存します。

NSData* data = [[NSData alloc] initWithContentsOfFile: @"/location/file.dat"];
[data writeToFile:@"/location/file.dat" atomically:YES];

案の定、それを呼び出してリソースを使用するアプリを実行すると、ビルド中に Xcode 経由で更新されます。したがって、Xcode 5 は、標準の io 関数によって設定されないいくつかの特別なフラグに依存しているように見えます。この時点で、その 2 行のものにパッチを適用するか、フラグのメカニズムとその書き込み方法を理解することができます。(FSEvents? そこには書き込みメカニズムが表示されません..)

4

4 に答える 4

12

私も同じ問題を抱えていました。ルート リソース フォルダーにアクセスするように Xcode ビルド フェーズ スクリプトをセットアップしましたが、現在は機能しています。ここで手順を見つけました。それらは次のとおりです(詳細については、リンクを参照してください)。

1) 単一のリソース ディレクトリ (「Resources」以外の名前) をプロジェクトの Resources セクションに青い「Folder Reference」として追加します。</p>

2) アプリのターゲットを右クリックし、[追加] -> [新しいビルド フェーズ] -> [新しい実行スクリプトのビルド フェーズ] を選択します。

3) 表示される [情報] ウィンドウで、シェルを /bin/tcsh に変更し、以下のスクリプトをコピーして [スクリプト] テキスト ビューに貼り付けます。

脚本:

touch -cm ${SRCROOT}/../../YourResourceFolder

(また、 Xcode 5 で「ビルド フェーズ」を見つける方法を知る必要がある場合もあります)

于 2013-10-09T14:27:43.037 に答える
1

より簡単な方法は、シェルまたはタームからフォルダーに触れるだけです。たとえば、端末で touch -cm PATH_TO_FOLDER_UNDER_RESOURCES を実行するだけです

PATH_TO_FOLDER_UNDER_RESOURCES は、ファイルを含むリソース フォルダーの下のフォルダーへの実際のパスです。

ファイルを変更しても、必ずしもフォルダーのタイムスタンプが変更されるとは限らず、Xcode はそれを含むフォルダーのタイムスタンプを調べます。

于 2014-07-28T09:06:20.917 に答える
0

xcode5 でも同じ問題が発生しました。javascript を頻繁に更新する必要があります。私のプロジェクトには多くのソースファイルがあったため、クリーンアップしてからビルドする必要がありました。後でアプリを削除して(「参照の削除」ではなく「ゴミ箱に移動」を選択して)ビルドしようとしましたが、非常に高速でしたが、アプリがプロジェクトに再び表示されるようにxcodeを再起動する必要がありました。

于 2014-03-04T16:10:47.157 に答える