bazel 项目在哪里存储它的“.so”文件?
Where does bazel project store its ".so" files?
我有一个非常简单的 bazel 项目,它构建了一个库和一个二进制文件,如下所示:
cc_binary(
name = "hello-world",
srcs = ["hello-world.cc"],
deps = [":hello-greet"],
)
cc_library(
name = "hello-greet",
srcs = ["hello-greet.cc"],
hdrs = ["hello-greet.h"],
)
是的,它适用于我的 ubuntu 盒子:
# cat hello-greet.cc
#include<stdio.h>
void f(){
printf("f function\n");
}
# cat hello-world.cc
#include<stdio.h>
#include"hello-greet.h"
int main(){
f();
printf("%s \n", "abc");
return 0;
}
"bazel build hello-world && bazel run hello-world" 将打印:
f function
abc
好的,好的。但是我找不到我的 libhello-greet.so 在哪里,它存储在哪里?我在当前目录下找不到它。
非常感谢。
Bazel 将源代码树视为只读并将其输出放在单独的输出目录中。官方找到这个目录的方法是运行bazel info output_base
。但是,为方便起见,Bazel 还在工作区根目录中创建了一个指向名为 bazel-out
的目录的符号链接。
在您的特定情况下,实际创建的 hello-greet
共享库可能有也可能没有——完全有可能在不创建中间共享对象的情况下构建二进制文件。 bazel build //:hello-greet
应该构建并显示 hello-greet
的共享对象的路径。
它表示 bazel build
输出的位置。通常在 bazel-bin/...
中,遵循与源文件相同的目录结构。
我有一个非常简单的 bazel 项目,它构建了一个库和一个二进制文件,如下所示:
cc_binary(
name = "hello-world",
srcs = ["hello-world.cc"],
deps = [":hello-greet"],
)
cc_library(
name = "hello-greet",
srcs = ["hello-greet.cc"],
hdrs = ["hello-greet.h"],
)
是的,它适用于我的 ubuntu 盒子:
# cat hello-greet.cc
#include<stdio.h>
void f(){
printf("f function\n");
}
# cat hello-world.cc
#include<stdio.h>
#include"hello-greet.h"
int main(){
f();
printf("%s \n", "abc");
return 0;
}
"bazel build hello-world && bazel run hello-world" 将打印:
f function
abc
好的,好的。但是我找不到我的 libhello-greet.so 在哪里,它存储在哪里?我在当前目录下找不到它。
非常感谢。
Bazel 将源代码树视为只读并将其输出放在单独的输出目录中。官方找到这个目录的方法是运行bazel info output_base
。但是,为方便起见,Bazel 还在工作区根目录中创建了一个指向名为 bazel-out
的目录的符号链接。
在您的特定情况下,实际创建的 hello-greet
共享库可能有也可能没有——完全有可能在不创建中间共享对象的情况下构建二进制文件。 bazel build //:hello-greet
应该构建并显示 hello-greet
的共享对象的路径。
它表示 bazel build
输出的位置。通常在 bazel-bin/...
中,遵循与源文件相同的目录结构。