私はSwift Frameworkをコンパイルし、サードパーティの開発者に配布しています。プロジェクトにいくつかのCコードを追加したいのですが、私がそれを動作させる唯一の方法は、Cヘッダーをフレームワークのヘッダーにインポートし、Cヘッダーをパブリックに設定することです。これは、私たちが望むものではない第三者の開発者にCコードのすべてを公開します。 https://spin.atomicobject.com/2015/02/23/c-libraries-swift/CコードをSwift Frameworkにコンパイルする方法
しかし、この方法の注意点は、あなたがこの技術を用いて構築する任意のフレームワークの消費者はまた、持ってしようとしていることに注意してください」である:私はこれを行う方法については、オンラインで見つけることができます
すべてがこの方法のバリエーションでありますSwiftの検索パスにモジュールを追加することができます。これを試してみましたが、サードパーティの開発者がエラーを受け取りました。Missing required module 'CGeodesic'
これは、Cヘッダーを指すように定義したモジュールです。
コードを非公開にして、サードパーティの開発者にビルド設定を変更してもらうために、Cコードをフレームワークにコンパイルするだけではどうでしょう?プロジェクトでこれらのサブモジュールをセットアップする必要はありませんが、一日の終わりには、単一のフレームワークバイナリに直接コンパイルして、ダイナミックリンクや検索パスなどを必要としません。
編集
プロジェクトは、Cコードサイドバイサイドスイフトコードです。
- 測地/
- Geodesic.h
- Geodesic.c
- Geodesic.swift
:私はこのようになります私のプロジェクトでサブディレクトリを持っていますスウィフトファイルは、Cコードをラップしてよりクリーンなものにする。私はそのディレクトリにmodule.modulemapファイルも持っていましたが、私が以前に言ったように動作しませんでした。私はスウィフトコードでCコードを横に並べることを好みますが、この問題を解決するためにCコードを提供したいと思います。
現在の設定は何ですか? SwiftコードとCコードを並べて表示しますか? – zneak
https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html。これは役に立ちますか? CコードはObjective-Cであり、CとSwiftが混在したフレームワークを書くことができるように見え、ユーザーには単一の言語で書かれたように見えます。私はまだこれを試していない。 – OmniProg
@OmniProgだから、現在行っていることです。その方法の問題は、必然的にすべてのヘッダーを公開することであり、これは避けようとしていることです。 – user1084447