2017-07-09 3 views
1

Ich habe eine objc_library-Regel, die mir sagt, dass es keinen SDK-Framework-Header finden kann (dieses Problem ist nicht spezifisch für IOKit, ich kann überhaupt keine Frameworks finden).Wo sucht Bazel nach OSX SDKs (und was ist zu tun, wenn es nicht gefunden wird)?

#import <IOKit/IOKitLib.h> 

fatale Fehler: 'IOKit/IOKitLib.h' Datei nicht

finde ich schon "IOKit" habe in meinem sdk_frameworks. Wenn ich einen Blick in /System/Library/Frameworks/IOKit.framework nehme, finde ich, dass es keine Verzeichnis-Header gibt, die diese Datei enthalten würden. Vielleicht ist es keine Überraschung, wenn Bazel dort hinschaut.

Wenn ich etwas härter aussehe, finde ich mehr Ergebnisse für das SDK.

Ich würde denken, dass dies die eine ist, die ich will, da ich für MacOSX entwickle.

/Applications/Xcode.app//Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/IOKit.framework 

Kann ich Bazel sagen, dieses SDK zu verwenden? Sollte ich müssen? Wie kann ich herausfinden, wo Bazel nach diesen Dingen sucht? Ich bin ziemlich vertraut mit der Verwendung von Bazel, aber ich bin mir nicht sicher, wie man debuggt, wenn die grundlegendsten Dinge versagen.

Hier ist das einfachste Beispiel, das fehlschlägt.

BUILD:

objc_library(
    name = "test", 
    srcs = ["test.cpp"], 
    copts = ["-ObjC++"], 
    sdk_frameworks = ["IOKit"], 
) 

// test.cpp

#import <IOKit/IOKitLib.h> 

ich gepostet auf bazel-diskutieren, aber es ist nicht viel Traktion zu bekommen. Ich benutze Bazel 0.5.2. https://groups.google.com/forum/#!topic/bazel-discuss/HhAjKblwHwk

Antwort

1

im bazel-discuss Thread gelöst, aber ich werde hier zusammenfassen:

Das Problem, das Sie hier finden, ist sehr wahrscheinlich, weil IOKit ein MacOS-only SDK ist, und Sie bauen diese Bibliothek für iPhoneSimulator. (Ich denke, das erste ist sowieso der Fall. Es sieht aus, als ob es tatsächlich ein IOKit.framework-Verzeichnis unter iPhoneSimulator9.3.sdk, aber es enthält keine Header - ich bin mir nicht sicher, was der Sinn davon ist)

Die richtige Erstellung der Bibliothek für MacOS ist hier der Schlüssel und sollte Ihre Probleme beheben. Sie können dies entweder tun, indem Sie von dieser Bibliothek über eine apple_binary mit platform_type="macos" abhängen, oder Sie können Befehlszeilen-Flags zu diesem Zweck anpassen. Ich glaube, --apple_platform_type=macos --cpu=darwin_x86_64 sollte den Trick

tun
Verwandte Themen