2017-09-11 1 views
1

J'essaie d'utiliser bazel pour construire ma bibliothèque JNI (écrit en C). Pas de chance après environ 4 heures: "fichier jni.h introuvable". Comment puis-je mettre les répertoires d'inclusion JDK sur le chemin de recherche? Essayé en utilisant des chemins absolus, mais Bazel rejette ceux-ci. Essayer d'utiliser un new_local_repository pour le JDK mais ne peut pas voir comment le faire fonctionner.bazel pour jni: fichier jni.h non trouvé

Ceci est Bazel 0.5.3 sur Mac OS 10.12.6, Java 1.8

+0

s'il vous plaît jeter un oeil à [java_toolchain] (https://docs.bazel.build/versions/master/be/java.html#java_toolchain) – Bhavik

+0

@Bhavik: comment cette aide moi construire une bibliothèque C qui appelle JNI? – mobileink

Répondre

1

Pouvez-vous compter sur @local_jdk//:jni_header ou d'autres étiquettes magiques de https://github.com/bazelbuild/bazel/blob/117da7a947b4f497dffd6859b9769d7c8765443d/src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE? Cependant, si vous utilisez le --java_base personnalisé, cela ne fonctionnera pas.

E.g. cela fonctionne pour moi:

cc_library(
    name = "foo", 
    srcs = [ 
     "@local_jdk//:jni_header", 
     "@local_jdk//:jni_md_header-linux", 
     "foo.cc" 
    ], 
    includes = [ "external/local_jdk/include/linux" ], 
) 
+0

quelle est la syntaxe magique? Si j'essaie '' 'cc_library ( name =" myjni ", deps = [" @local_jdk //: jni_header ", ... etc ...' '' alors j'obtiens une erreur 'dans l'attribut deps de la règle cc_library//: jni: la règle de groupe de fichiers '@local_jdk //: jni_header' est mal placée ici (cc_inc_library, cc_library, objc_library ou cc_proto_library) .' – mobileink

+0

il y a aussi https://github.com/bazelbuild/bazel/blob/master/src/ main/tools/jdk.BUILD mais aucune indication je ne peux trouver montrant comment utiliser les choses – mobileink

+0

Édité la réponse pour avoir la bonne mise en forme S'il vous plaît partagez avec nous si vous faites ce travail tout au long (peut-être poster à [ bazel-discuter] (https://groups.google.com/forum/#!forum/bazel-discuss)? Sons très intéressant :). – mhlopko