Круговая зависимость XCode между модулями «Core» и «UserInterface» - PullRequest
0 голосов
/ 02 мая 2020

У меня есть рабочая область xcode с двумя вложенными проектами и несколько пользовательских каркасных структур, которые создают дерево зависимостей. Все выложено как:

.
├─ MainApp
│  └─ UserInterface.framework
├─ DataLayer.framework
└─ Core.framework

DataLayer и Core построены как отдельные каркасы (с использованием карфагена) и связаны с UserInterface и MainApp с помощью «Не вставлять» вариант. DataLayer и Core добавляются в раздел Frameworks and Library для UserInterface и MainApp, а пути поиска в структуре включают DataLayer и Core. Внутри MainApp есть сценарий копирования для перемещения каркасов в BUILT_PRODUCTS_DIR.

Все выглядит хорошо, но я получаю эту ошибку:

<unknown>:0: error: circular dependency between modules 'Core' and 'UserInterface'
Stack dump:
0.
// Files
---
3.  While reading from 'DataLayer'
4.  While reading from 'Core'
0  swift                    0x000000010daf64ea PrintStackTraceSignalHandler(void*) + 42
1  swift                    0x000000010daf5cc0 SignalHandler(int) + 352
2  libsystem_platform.dylib 0x00007fff726c65fd _sigtramp + 29
3  libsystem_platform.dylib 0x00007fa91c080200 _sigtramp + 2845547552
4  swift                    0x000000010a90c4d6 swift::namelookup::ImportCache::getImportSet(swift::DeclContext const*) + 2614
5  swift                    0x000000010a63a33a swift::ClangImporter::Implementation::finishLoadingClangModule(clang::Module const*, bool) + 1066
6  swift                    0x000000010a64c608 swift::ClangImporter::Implementation::handleDeferredImports() + 520
7  swift                    0x000000010a64c03a swift::ClangImporter::Implementation::importHeader(swift::ModuleDecl*, llvm::StringRef, swift::SourceLoc, bool, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer> >, bool) + 2026
8  swift                    0x000000010a64d0b3 swift::ClangImporter::importBridgingHeader(llvm::StringRef, swift::ModuleDecl*, swift::SourceLoc, bool, bool) + 1075
9  swift                    0x000000010a64cad4 swift::ClangImporter::importHeader(llvm::StringRef, swift::ModuleDecl*, long long, long, llvm::StringRef, swift::SourceLoc) + 148
10 swift                    0x000000010a5f69ea swift::SerializedModuleLoaderBase::loadAST(swift::ModuleDecl&, llvm::Optional<swift::SourceLoc>, llvm::StringRef, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer> >, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer> >, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer> >, bool, bool) + 2298
11 swift                    0x000000010a5f4ca5 swift::SerializedModuleLoaderBase::loadModule(swift::SourceLoc, llvm::ArrayRef<std::__1::pair<swift::Identifier, swift::SourceLoc> >) + 581
12 swift                    0x000000010a540d14 swift::ModuleFile::getModule(llvm::ArrayRef<swift::Identifier>, bool) + 852
13 swift                    0x000000010a5f6baf swift::SerializedModuleLoaderBase::loadAST(swift::ModuleDecl&, llvm::Optional<swift::SourceLoc>, llvm::StringRef, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer> >, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer> >, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer> >, bool, bool) + 2751
14 swift                    0x000000010a5f4ca5 swift::SerializedModuleLoaderBase::loadModule(swift::SourceLoc, llvm::ArrayRef<std::__1::pair<swift::Identifier, swift::SourceLoc> >) + 581
15 swift                    0x000000010a6323a9 swift::ClangModuleUnit::getOverlayModule() const + 473
16 swift                    0x000000010a6350d7 swift::ClangModuleUnit::getImportedModulesForLookup(llvm::SmallVectorImpl<std::__1::pair<llvm::ArrayRef<std::__1::pair<swift::Identifier, swift::SourceLoc> >, swift::ModuleDecl*> >&) const + 247
17 swift                    0x000000010a90b7c1 collectExports(std::__1::pair<llvm::ArrayRef<std::__1::pair<swift::Identifier, swift::SourceLoc> >, swift::ModuleDecl*>, llvm::SmallVectorImpl<std::__1::pair<llvm::ArrayRef<std::__1::pair<swift::Identifier, swift::SourceLoc> >, swift::ModuleDecl*> >&) + 113
18 swift                    0x000000010a90c42a swift::namelookup::ImportCache::getImportSet(swift::DeclContext const*) + 2442
19 swift                    0x000000010a63a33a swift::ClangImporter::Implementation::finishLoadingClangModule(clang::Module const*, bool) + 1066
20 swift                    0x000000010a64c608 swift::ClangImporter::Implementation::handleDeferredImports() + 520
21 swift                    0x000000010a64c03a swift::ClangImporter::Implementation::importHeader(swift::ModuleDecl*, llvm::StringRef, swift::SourceLoc, bool, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer> >, bool) + 2026
22 swift                    0x000000010a64d0b3 swift::ClangImporter::importBridgingHeader(llvm::StringRef, swift::ModuleDecl*, swift::SourceLoc, bool, bool) + 1075
23 swift                    0x0000000109b520d4 swift::CompilerInstance::performSemaUpTo(swift::SourceFile::ASTStage_t) + 3108
24 swift                    0x000000010983ed99 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 10281
25 swift                    0x00000001097bff53 main + 1283
26 libdyld.dylib            0x00007fff724cdcc9 start + 1
27 libdyld.dylib            0x000000000000015c start + 2377327764
error: Segmentation fault: 11 (in target 'MainApp' from project 'MainApp')

Там нет настоящая круговая зависимость, но все опиралось на Core. Я знаю, что Core не зависит от UserInterface, потому что он построен отдельно. Любая помощь в том, как я мог отладить это, будет принята с благодарностью.

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