2017-07-06 1 views
1

Je n'arrive pas à inclure certains fichiers d'en-tête via une commande de construction dans bazel. J'ai suivi le example qu'ils ont inclus dans la documentation de bazel.Impossible d'inclure le fichier d'en-tête externe via la règle cc_library pour bazel

Ceci est mon fichier BUILD

cc_library(
    name = "hello-greet", 
    srcs = ["hello-greet.cc"], 
    hdrs = ["hello-greet.h"], 
    copts = ["-Imain/include"] 
) 

cc_binary(
    name = "hello-world", 
    srcs = ["hello-world.cc"], 
    deps = [ 
     ":hello-greet", 
    ], 
) 

Voici la structure de mon répertoire.

  • Workspace
  • principale
    • comprennent
      • bonjour-greet.h
    • hello-greet.cc
    • hello-world.cc
    • BUILD

Je ne sais pas si cela va aider, mais voici un code pour les fichiers source et en-tête.

hello-greet.cc

#include "hello-greet.h" 
#include <string> 

std::string get_greet(const std::string& who) { 
    return "Hello " + who; 
} 

hello-world.cc

#include "hello-greet.h" 
#include <ctime> 
#include <iostream> 
#include <string> 

void print_localtime() { 
    std::time_t result = std::time(nullptr); 
    std::cout << std::asctime(std::localtime(&result)); 
} 

int main(int argc, char** argv) { 
    std::string who = "world"; 
    if (argc > 1) { 
    who = argv[1]; 
    } 
    print_localtime(); 
    return 0; 
} 

Quand je lance la commande de construction Bazel, il se plaint avec cette erreur

INFO: Found 1 target... 
ERROR: missing input file '//main:hello-greet.h'. 

Répondre

0

Vous devriez être en mesure de faire ce que vous voulez en ajoutant includes = "." au cc_library (pas besoin d'avoir le copts)