我有一个非常简单的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在哪里,在哪里存储?我在当前目录下找不到它。
非常感谢。
答案 0 :(得分:2)
Bazel将源树视为只读,并将其输出放在单独的输出目录中。查找此目录的官方方法是运行bazel info output_base
。但是,为方便起见,Bazel还在工作空间根目录中建立了指向此目录bazel-out
的符号链接。
在您的特定情况下,可能会或可能不会为hello-greet
实际创建一个共享库-完全可以在不创建中间共享对象的情况下构建二进制文件。 bazel build //:hello-greet
应该为hello-greet
构建并显示指向共享对象的路径。
答案 1 :(得分:0)
它说明conda init
的输出中。通常在System cannot find the path specified
中,遵循与源文件相同的目录结构。