Цикл внутри;здание может привести к ненадежным результатам: Xcode 10 Error - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь перейти на новую систему сборки при компиляции с Xcode 10. Тем не менее, он выдает следующую ошибку:

Cycle details:
→ Target 'project' : LinkStoryboards

Target 'project' has compile command with input '/Users/project/Commons/Components/ScreenshotSharing/ViewController/AppShare.storyboard'

Target 'project' : ValidateEmbeddedBinary /Users/project/Xcode/DerivedData/project-hgqvaddkhmzxfkaycbicisabeakv/Build/Products/Debug-iphoneos/project.app/PlugIns/stickers.appex

Target 'project' has process command with input '/Users/project/Resources/Info.plist'

Target 'project' has compile command with input '/Users/project/Commons/Components/ScreenshotSharing/ViewController/AppShare.storyboard'

Даже после удаления файла проблемы, я получаю то же самое для другой xib / раскадровки,Как я могу решить эту ошибку, не возвращаясь к устаревшей системе сборки?

Ответы [ 21 ]

0 голосов
/ 18 ноября 2018

Мое решение состояло в том, чтобы просто очистить папку сборки, а затем заново собрать.

0 голосов
/ 23 ноября 2018

Core_Data

У меня была та же проблема и ошибка, но моя произошла, когда я "создал NSManagedObject Subclass" для моей сущности, и я столкнулся с этой ошибкой.Поэтому, если вы считаете, что ваша ошибка в отношении Core Data такая же, как у меня, то, вероятно, вам может помочь (и помог мне):

  • щелкнуть по вашей сущности в файле "xcdatamodel"
  • перейдите на правую панель, щелкните инспектор модели данных
  • замените «Модуль» на «Модуль текущего продукта»
  • и, наконец, замените «Кодоген» на «Вручную / Нет»
  • очистить и собрать

Я думаю, потому что в других сценариях Xcode создает файл автоматически, а когда мы создаем другой, это вызывает конфликт.

0 голосов
/ 02 ноября 2018

У меня была похожая проблема со смешанным взаимодействием между Swift, Objective-C и CoreData : в моем проекте (написанном на Swift) я также использовал автоматически сгенерированные классы Swift Core Data.

Но в какой-то момент мне понадобился класс Objective C с открытыми свойствами (определенными в его заголовке), ссылающимися на основные сущности данных.

#import "ProjectName-Swift.h" // this is to import the swift entities into ObjC

@interface myObjCClass : NSObject

@property (nonatomic) MyCoreDataClass*myEntity;

@end

Как только я изменил модель CoreData, XCode попыталсячтобы перестроить классы, и я застрял с указанной ошибкой сборки цикла.

После начального момента отчаяния, поскольку у меня не было никаких фаз заголовка компиляции в моем проекте, чтобы изменить порядок, я обнаружил, чторешение было довольно простым:

В myObjCClass.h я удалил общий оператор импорта заголовка Swift и изменил его с помощью директивы @class:

@class MyCoreDataClass; // tell the compiler I will import the class definition somewhere else

// the rest stays the same
@interface myObjCClass : NSObject

@property (nonatomic) MyCoreDataClass*myEntity;

@end

, и я переместил #import "ProjectName-Swift.h"оператор в файл определения класса myObjCClass.m.

#import "myObjCClass.h"
#import "ProjectName-Swift.h"

@implementation myObjCClass

@end

И он не беспокоится.

0 голосов
/ 06 ноября 2018

Я решил эту проблему, переместив «Run Script» в начало фаз сборки.

0 голосов
/ 23 апреля 2019

Xcode 10.2.1 / Цель модульного тестирования.Моя цель модульного теста не зависит от цели хоста, чтобы улучшить время сборки.Решите его, сняв отметку Find Implicit Dependencies в Scheme - Build, так как я указываю все зависимости в Build Settings - Compile Sources.

0 голосов
/ 06 июня 2018

Новая система сборки Xcode 10 обнаруживает циклы зависимостей в вашей сборке и предоставляет диагностику, чтобы помочь вам разрешить их.Исправление этих циклов зависимостей повышает надежность вашей сборки, так что правильные продукты создаются последовательно (циклы являются возможной причиной необходимости удаления ваших производных данных).Это также сокращает время инкрементной сборки, поскольку циклы в сборке приводят к тому, что что-то в графике сборки всегда устаревает в каждой сборке, заставляя повторную сборку работать без необходимости каждый раз при сборке.

Есть документация по разрешению некоторых общих типов циклов зависимости в Справке XCode: https://help.apple.com/xcode/mac/current/#/dev621201fb0

Тем не менее, эта диагностика цикла выглядит немного странно.Похоже, вы смогли решить эту проблему путем перестройки этапов сборки, но я не думаю, что диагностика действительно объяснила проблему.Если вы не возражаете, сообщение об ошибке по улучшению этой диагностики для этого конкретного случая будет очень цениться.Вы можете подать один на https://bugreport.apple.com. Пожалуйста, включите всю информацию о вашем проекте, который, по вашему мнению, может иметь отношение к делу;образец проекта, который воспроизводит проблему, идеален, но если вы не можете присоединить это, диагностика и некоторое представление о структуре проекта все еще полезны.

0 голосов
/ 26 июля 2018

У меня была эта проблема с Cocoapods, и я нашел временный обходной путь:

  1. Установите последнюю версию cocoapods (1.5.3): sudo gem update cocoapods
  2. Удалите ваши производные данные:rm -rf ~/Library/Developer/Xcode/DerivedData/*
  3. pod install

Источник здесь и я нахожусь на Xcode 10 beta 4.

РЕДАКТИРОВАТЬ : теперь на Xcode 10.0 и по-прежнему актуально.

0 голосов
/ 25 января 2019

Моя проблема была связана с циклической зависимостью между моим быстрым соединительным заголовком и моими целевыми файлами c.

В моих целевых заголовочных файлах c у меня был файл #import "...-swift.h", а затем в паре моих быстрыхфайлы, которые я включал в эти файлы с указанным импортом и, таким образом, вызывал циклическую зависимость.

Это StackOverflow, которое привело меня к поиску решения:

Цель C, проблема быстрой совместимости из-за циклической зависимости

Какчтобы избежать циклической ссылки, когда соединительный заголовок Swift импортирует файл, который импортирует сам Hopscotch-Swift.hбыстро, и это решило мою проблему.

0 голосов
/ 25 июля 2018

Та же проблема на Version 10.0 beta 3 (10L201y), и я хотел, чтобы Новая система сборки .

Проблема была отключена Enable Modules (C and Objective-C)

в Build Settings -> Apple Clang - Language - Modules

После его включения (установите в YES) избавился от ошибки.

0 голосов
/ 26 июля 2018

В целевом поле Scheme найдите метку Build и убедитесь, что Find Implicit Dependencies не отмечен.Эти шаги могут работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...