2017-12-29 13 views
1

여러 플랫폼의 API를 사용하는 크로스 플랫폼 라이브러리를 빌드하려고합니다. 저는 지금 macOS를하고 있습니다. 객관적으로 사용할 필요가있을 때 문제가 생겼습니다.-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

두 솔루션 :

  • 중 하나 너무 base_machdrs = ["application.h"]를 추가하거나
  • , 그냥 hdrs = ["application.h"]와 다른 cc_library을 만들 basebase_mac 모두에서 해당에 의존하고 base에서 hdrsbase_mac
  • 을 제거
+0

감사합니다. 두 번째 제안을 따르기 시작했습니다. –

관련 문제