2017-05-11 5 views
0

J'ai un projet où je construis plusieurs bibliothèques et un exécutable en utilisant Bazel. J'ai besoin de construire une bibliothèque partagée et ensuite le copier dans un autre dossier avant de construire l'exécutable.Copie de fichier de construction de poste de Bazel

Je peux construire la bibliothèque, mais je n'arrive pas à comprendre comment la copier après la construction. La meilleure supposition à ce jour est genrule et cp, mais je ne suis pas sûr de la façon de l'implémenter et de m'assurer qu'elle s'exécute après la construction de la bibliothèque.

Existe-t-il un moyen de le faire? En ce qui concerne les raisons pour lesquelles j'ai besoin de faire ceci: Je construis un projet Unity qui nécessite la construction de plugins de code natif et leur placement dans des emplacements particuliers dans le dossier du projet Unity.

Répondre

0

Vous pouvez simplement envelopper la règle dans une macro comme ceci:

def myshared_library(name, **kwargs): 
    unity_rule(
     name = "%s.lib" % name, 
     **kwargs 
    ) 

    native.genrule(
     name = name, 
     srcs = ["%s.lib" % name], 
     outs = ["dummy.output"], 
     cmd = "cp $(location {}.lib) $(location deployloc)".format(name), 
    ) 

Remplacez ensuite unity_rule avec myshared_library. Points bonus si vous choisissez de meilleurs noms.

Pas la manière la plus élégante mais devrait fonctionner