Как мне построить этот простой пример с Bazel? - PullRequest
1 голос
/ 11 марта 2019

Предположим, у меня есть такой проект:

$ tree . 
├── WORKSPACE
├── include
│   └── header.hpp
└── main.cpp
└── BUILD.bazel

И main.cpp выглядит так:

#include "header.hpp"

int main() {
  return 0;
}

Как должен выглядеть мой файл BUILD.bazel?

Моя текущая попытка:

cc_binary(
  name = "app",
  srcs = [
    "main.cpp",
    "include/header.hpp",
  ],
)

Редактировать: Забыл упомянуть мой WORKSPACE файл


Редактировать: нашел обходной путь, но я нея думаю, что это очень элегантно:

cc_library(
  name = "app-hdrs",
  hdrs = [
    "include/header.hpp",
  ],
  srcs = [
    "include/header.hpp",
  ],
  strip_include_prefix = "include",
)

cc_binary(
  name = "app",
  srcs = [
    "main.cpp",
  ],
  deps = [
    ":app-hdrs",
  ],
)

1 Ответ

1 голос
/ 11 марта 2019

Вам нужен файл с именем WORKSPACE в папке вашего проекта:

$ tree . 
├── include
│   └── header.hpp
└── main.cpp
└── BUILD.bazel
└── WORKSPACE

Затем вы можете создать свое приложение с помощью следующей команды:

bazel build //:app

А также укажите путь включения в флаге copts:

cc_binary(
  name = "app",
  srcs = [
    "main.cpp",
    "include/header.hpp",
  ],
  copts = ["-Iinclude", "-Wall", "-Werror"],
)

cc_binary(
  name = "app",
  includes = [ "include" ],
  srcs = [
    "main.cpp",
    "include/header.hpp",
  ],
  copts = [ "-Wall", "-Werror" ],
)
...