1

組み込みフレームワークを含むアプリケーションがあります。プロジェクトをビルドするときに、これらのフレームワークからヘッダーを削除したいと思います。ただし、アプリラッパーには、削除したくない他のヘッダーがあります。(バンドルされたコンパイラが機能するようにヘッダーを含める必要があるCおよびC ++の統合開発環境を作成しています。)Unixツールを使用してディレクトリ(およびそのポイントのシンボリックリンク)を見つけて削除するスクリプト実行フェーズがありますfind。それらに)埋め込まれたフレームワークから。Xcodeのデバッガーで使用するためにビルドしているときは正常に動作します。HeadersPrivateHeaders

ただし、XcodeのArchiveコマンドを使用してリリースを実行すると、${BUILT_PRODUCTS_DIR}変数が正しく展開されなくなります。調査の結果、存在しないディレクトリを指していることがわかりました。おそらく、Xcodeは、Finderで開いてその内容を確認する前に、アーカイブ手順中にこのディレクトリを自動的に削除しました。

.appXcodeアーカイブの作成中に正しく機能するスクリプトの実行ビルドフェーズでパッケージディレクトリへのパスを取得するにはどうすればよいですか?find次に、と${FRAMEWORKS_FOLDER_PATH}変数を使用して、埋め込みフレームワーク内からヘッダーを削除できます。

Xcodeスキームのポストアクションを使用してヘッダーを削除しようとしましたが、埋め込みフレームワーク内のヘッダーファイルだけでなく、すべてのヘッダーファイルが削除されるため、正しく機能しません。.appこれは、スキームの事後処理でディレクトリが見つからないためです。([ビルド設定の提供元]ポップアップメニューを使用してみましprintenvたが、設定が正しくエクスポートされることを確認しましたが、.appディレクトリが見つかりません。)

4

1 に答える 1

1

私はそれを自分で理解しました。プロジェクトをアーカイブするときに使用しているスキームに入り、アーカイブの下にスクリプトの実行ポストアクションを追加しました。使用したスクリプトの内容は次のとおりです。

find "${ARCHIVE_PRODUCTS_PATH}/${INSTALL_DIR}/${FRAMEWORKS_FOLDER_PATH}" \
-name "Headers" -exec rm -r {} \;
find "${ARCHIVE_PRODUCTS_PATH}/${INSTALL_DIR}/${FRAMEWORKS_FOLDER_PATH}" \
-name "PrivateHeaders" -exec rm -r {} \;

これを自分で行う場合は、架空のINSTALL_DIR変数をアプリラッパーの場所に置き換える必要があることに注意してください。これは、アプリケーションターゲットの[ビルド設定]画面で確認できます。「インストールディレクトリ」を探します。(アプリラッパーの名前はFRAMEWORKS_FOLDER_PATH変数の一部であるため、上記では表示されませんでした。)

于 2013-02-22T23:20:52.347 に答える