*_binary
规则以给定语言构建可执行程序。构建完成后,可执行文件将驻留在构建工具的二进制输出树中,并以规则标签的对应名称存在,因此//my:program
会出现在(例如)$(BINDIR)/my/program
。
此规则还将产生一个runfile目录,该目录包含该规则属性data所提及的所有文件或者所有传递依赖关系的任何规则,这些文件聚集在一起,以便部署生产环境。
*_test 是*_binary
的一种特化,用于自动测试,测试只是简单的程序:成功时返回0。就像二进制文件一样,测试也有runfiles树,它下面的文件是测试可以在运行时合法打开的唯一文件。
*_library
规则以给定的编程语言指定单独编译的模块。库可以依赖于其他库,并且二进制文件和测试可以依赖于库,并具有预期的单独编译行为。