2016-12-13 5 views
2

Вот пример корневой директорииКак использовать быстрый модуль в объектно-модульном модуле с SwiftPM?

├── Package.swift 
└── Sources 
    ├── Objc-cli 
    │   └── main.m 
    └── Swifty 
     └── MyStruct.swift 

Где Swifty модуль только простая структура

// MyStruct.swift 

public struct MyStruct { 
    public var text = "Hello, World!" 

    public init() { 
    } 
} 

И в Objc-cli я пытаюсь связать быстрый модуль, как это.

// main.m 

#import <Foundation/Foundation.h> 
@import Swifty <---- Not found 

int main() { 
    NSLog(@"Hello from Objc"); 
    return 0; 
} 

Вот что Package.swift выглядит следующим образом:

// Package.swift 

import PackageDescription 

let package = Package(
    name: "MyTest", 
    targets: [ 
     Target(name: "Swifty", dependencies: []), 
     Target(name: "Objc-cli", dependencies: ["Swifty"]), 
    ] 
) 

К сожалению, компилятор не распознает Swifty модуль внутри Objective-C модуль. Вот вывод:

$ swift build 
Compile Swift Module 'Swifty' (1 sources) 
Compile Objc-cli main.m 
/tmp/TestPackage/Sources/Objc-cli/main.m:10:9: fatal error: module 'Swifty' not found 
@import Swifty 
~~~~~~~^~~~~~ 
1 error generated. 
<unknown>:0: error: build had 1 command failures 

Я что-то пропустил или просто невозможно сейчас?

+0

Вы пробовали просто убирая '@import Swifty'? – masters3d

+0

@ masters3d Я пытаюсь импортировать быстрый модуль в модуль объектива-c. Какова цель удаления импорта? – klefevre

+0

Если модуль obj-c является тестовым пакетом внутри быстрого пакета, вам не нужен импорт. – masters3d

ответ

0

В настоящее время невозможно импортировать модуль Swift в модуль C, он работает только по-другому, импортирует C в Swift.

Вы можете найти подробную информацию на SwiftPM - C language targets

+0

ссылка 404ing, базовая страница здесь: https://github.com/apple/swift-package-manager/tree/master/Documentation –

+1

Обновлена ​​ссылка: https://github.com/apple/swift-package-manager/blob/master/Documentation/Usage.md#c-language-targets –