Paralleliseビルドを有効にしてヘッダーの欠落の問題を回避する場合は、スキームに事前ビルド手順を提供して、反応ヘッダーを派生データ領域に配置します。この場合、ビルド設定はReactプロジェクトからのものであることに注意してください。はい、それは美しさの問題ではありませんが、それは仕事を成し遂げ、ビルドから多くの時間を削ります。ビルド前のステップの出力は、prebuild.logに記録されます。コピーする必要がある正確なヘッダーは、プロジェクトの反応ネイティブの依存関係に依存しますが、これから要旨が得られます。
環境変数から派生データディレクトリを取得し、必要な反応ヘッダーをコピーします。
#build_prestep.sh (chmod a+x)
derived_root=$(echo $SHARED_DERIVED_FILE_DIR|sed 's/DerivedSources//1')
react_base_headers=$(echo $PROJECT_FILE_PATH|sed 's#React.xcodeproj#Base/#1')
react_view_headers=$(echo $PROJECT_FILE_PATH|sed 's#React.xcodeproj#Views/#1')
react_modules_head=$(echo $PROJECT_FILE_PATH|sed 's#React.xcodeproj#Modules/#1')
react_netw_headers=$(echo $PROJECT_FILE_PATH|sed 's#React/React.xcodeproj#Libraries/Network/#1')
react_image_header=$(echo $PROJECT_FILE_PATH|sed 's#React/React.xcodeproj#Libraries/Image/#1')
echo derived root = ${derived_root}
echo react headers = ${react_base_headers}
mkdir -p ${derived_root}include/React/
find "${react_base_headers}" -type f -iname "*.h" -exec cp {} "${derived_root}include/React/" \;
find "${react_view_headers}" -type f -iname "*.h" -exec cp {} "${derived_root}include/React/" \;
find "${react_modules_head}" -type f -iname "*.h" -exec cp {} "${derived_root}include/React/" \;
find "${react_netw_headers}" -type f -iname "*.h" -exec cp {} "${derived_root}include/React/" \;
find "${react_image_header}" -type f -iname "*.h" -exec cp {} "${derived_root}include/React/" \;
スクリプトはビルドクリーン中に呼び出されます-これは理想的ではありません。私の場合、クリーンアップの早い段階でスクリプトを終了させるための環境変数が1つあります。
if [ "$RUN_CLANG_STATIC_ANALYZER" != "NO" ] ; then
exit 0
fi