ホーム > Tensorflow >

bazelプロジェクト作成のチュートリアル

Hello World

bazelにはWORKSPACEとBUILDの2種類の設定ファイルが存在する。

WORKSPACEという名前の設定ファイルは、プロジェクトのトップのディレクトリに配置し、 外部のプロジェクトへの依存性を記述する。

BUILDという名前の設定ファイルには、具体的なビルド設定を記述する。

これを踏まえて、このチュートリアルでは、 以下のようなディレクトリ構造のプロジェクトを作成する。

.
├── WORKSPACE
└── helloworld
    ├── BUILD
    └── main.cpp

BUILDとmain.cppの内容は以下の通り。WORKSPACEは今回の場合は空のファイルでよい。

cc_binary (
  name = "main",
  srcs = ["main.cpp"],
)
#include <iostream>

int main(void)
{
  std::cout << "Hello bazel world." << std::endl;
  return 0;
}

このようなプロジェクトが作成できたら、 以下のコマンドでプロジェクトをビルドすることができる。

bazel build //helloworld:main

作成したバイナリを実行するには、bazel runを使用するか、 または、bazel-bin以下に作成されたバイナリを直接実行すれば良い。

> bazel run //helloworld:main
INFO: Found 1 target...
Target //helloworld:main up-to-date:
  bazel-bin/helloworld/main
INFO: Elapsed time: 0.071s, Critical Path: 0.00s

INFO: Running command line: bazel-bin/helloworld/main
Hello bazel world.
> ./bazel-bin/helloworld/main
Hello bazel world.

また、bazel cleanを実行すると、bazelによって生成されたファイルを全て削除することができる。

bazel clean

毎回、bazel 〜〜 と打ち込むのを省略したければ、以下のようなMakefileをプロジェクトの直下に作成してもよい。

BAZEL=$(shell which bazel)

.DEFAULT_GOAL := build

.PHONY: build
build :
      $(BAZEL) build //helloworld:main

.PHONY: run
run:
      $(BAZEL) run //helloworld:main

.PHONY: clean
clean :
      $(BAZEL) clean