2016-06-16 17 views
0

Swiftで書かれたOSXプロジェクトにlibsass(Cライブラリ)をインポートしようとしています。しかし、どういうわけか私は依存性の問題をたくさん扱っています。 Btw私は、このガイドのモジュールマップをここで使用しています:https://spin.atomicobject.com/2015/02/23/c-libraries-swift/SwiftプロジェクトへのCライブラリのインポート


libsassレポ:https://github.com/sass/libsass

私はversion.cを実行することができていますC言語でプログラム(例が提供さlibsass):

#include <stdio.h> 
#include "sass/context.h" 
int main() { 
    puts(libsass_version()); 
    return 0; 
} 

私のアプローチは、ヘッダファイルをインポートすることでしたが'libsass/include'ディレクトリにあります。ここで

は、これまでに試したものです:

私はmodule.mapファイルを構築し、libsassディレクトリに配置します。

module libsass [system] { 
    header "include/sass.h" 
    export * 
} 

私はその後、私の迅速なプロジェクトスウィフトコンパイラ>の検索パス>インポートパスに '$ {SRCROOT}/libsass'

4を設定

にディレクトリを追加ビルドと私はこれに遭遇する:

'sass/base.h' file not found with <angled> include; use "quotes" instead 
'sass/version.h' file not found with <angled> include; use "quotes" instead 
'sass/values.h' file not found with <angled> include; use "quotes" instead 

ビルド設定]> [検索パス>に設定ヘッダ検索パス '$(PROJECT_DIR)/ libsass /含ま'

ビルド設定 '$(PROJECT_DIR)/ libsass /含める' に設定>検索パス>ライブラリの検索パスを

私は以前のエラーを参照してくださいが、test_superselector.cppに新しいエラーが発生していないこの時間は:

私は>その他のリンカフラグのリンク>設定を構築するための「-lsass」を追加しました。 libsassが提供している例では、-lsassフラグを使用してCコードをコンパイルしています。

同じ、いいえ。

私はこのアウトが、明確な進展を理解しようとして2日間を過ごしました。 libsassリポジトリを見てください。どんな助けもありがたいです。 ありがとう!!

答えて

0

私は簡単にgithubの上libsassコードを見ました。 Xcodeプロジェクトにlibsassソースディレクトリを追加し、プロジェクトの一部としてライブラリソースを構築しようとしているため、ast.hppファイルを見つけることができません。

リンカーフラグに-lsassを追加したので、私はあなたのプロジェクトで既にビルドされたライブラリを使用しようとしていると思います。これはよりクリーンなアプローチであり、モジュールマップが便利です。

Xcodeプロジェクトにlibsassディレクトリを追加しないでください。 libsassヘッダーとライブラリを含むディレクトリをプロジェクトのディレクトリに置くことができます。これはプロジェクトに追加するのと同じではありません。

module.mapの行は、module.mapの相対的な絶対パスまたは相対パスを持つ必要があります。

いくつかの他の観察:

  • ライブラリ検索パスはlibsass ライブラリファイルがあるディレクトリを含める必要があります。たとえば、静的ライブラリの場合は 、ファイルの名前はlibsass.aとなります。
  • ライブラリのソースを見ると、それはC++ライブラリなので、 をSwiftで直接使用することはできません。たとえば、Objective-C++で書かれた などのラッパーが必要です。
関連する問題