У меня есть одна цель A, которая просто запускает скрипт и генерирует кучу файлов (файлы локализации через шпагат). Другие цели, которые копируют эти файлы локализации, имеют целевую зависимость от A, поэтому они не запускаются до создания файлов.
Почему-то это не работает. Несмотря на то, что все файлы были сгенерированы успешно, и я вижу, что фазы копирования файлов выполняются позже, файлы не найдены.
Кроме того, это не работает, только когда я делаю чистую сборку. Во второй сборке сгенерированные файлы уже существуют и копии успешно завершены.
Например, мой скрипт запускает это:
bundle exec twine generate-all-localization-files Strings/ExtensionStrings.txt MyExtension/Resources --format apple --create-folders --tags ios
find /Users/me/proj/myapp -name Localizable.strings
Я вижу вывод /Users/me/proj/myapp/MyExtension/Resources/zh-Hans.lproj/Localizable.strings
на ранних этапах процесса сборки, а потом вижу:
builtin-copyStrings --validate --outputencoding binary --outdir /Users/me/Library/Developer/Xcode/DerivedData/myapp-adfoisdfnasdao/Build/Products/Debug-iphonesimulator/MyExtension.appex/zh-Hans.lproj -- /Users/me/proj/myapp/MyExtension/Resources/zh-Hans.lproj/Localizable.strings
error: Build input file cannot be found: '/Users/me/proj/myapp/MyExtension/Resources/zh-Hans.lproj/Localizable.strings'
И снова, если я строю второй раз, это работает. Что, черт возьми, происходит? Я предполагаю, что это как-то связано с параллельными сборками Xcode 10, но я подумал, что размещение генерации / копии в отдельных целях с зависимостью между ними решит эту проблему.