2017-12-29 23 views
1

私はいくつかのプラットフォームのAPIを使用するクロスプラットフォームのライブラリを構築しようとしています。私は今、macOSをやっています。私はobjective-cを使う必要があるので、問題になってきました。他のパッケージで複数のプラットフォームの実装を扱う

cc_library(
    name = "base", 
    hdrs = ["application.h"], 
    deps = [":base_mac"], 
    visibility = ["//visibility:public"], 
) 

objc_library(
    name = "base_mac", 
    srcs = ["application_mac.mm"], 
) 

、私はbaseに依存しています:

は、私はこれを持っています。

問題はapplication_mac.mmapplication.hが含まれており、それを実装していますがbase_macルールがbaseルールに依存せず、そのヘッダーを使用することはできませんので、それがコンパイルされないということです。依存関係のサイクルがあり、それが気に入らないようなので、この依存関係を追加することもできません。

この問題を解決するにはどうすればよいですか?

答えて

1

2種類の溶液:

  • すぎるかbase_machdrs = ["application.h"]を追加したり、
  • は、ちょうどhdrs = ["application.h"]で別のcc_libraryを作成basebase_macの両方からそれに依存し、baseからhdrsbase_mac
  • を削除します
+0

ありがとうございました。私はあなたの2番目の提案に従いました。 –

関連する問題