Cyber-bezal

 

// bazel
// google研发的一款开源构建和测试工具



// 单个主cpp文件
// demo_cc目录下新建buld文件,demo_cc目录即为cpp所在目录
cc_binary(
    name = "1",
    src = ["1.cpp"],
    deps = ["//cyber"] // 因为include了cyber.h

)


bazel build cyber/demo_cc/...   // 构建demo_cc目录下的所有文件

// source cyber/setup.bash  // 刷新环境变量

./bazel-bin/cyber/demo_cc/name // 执行


// 单个头文件实现
cc_library(
    name = "hello_great_lib",
    srcs = ["hello_great_lib.cpp"],
    hdrs = ["hello_great.h"]
    // deps = [""]
)

bazel build demo_lib/...
./demo_lib/hello_great_lib


// 同目录依赖
// 如果main依赖了.h文件,则在build中都写上相应的cc_library和cc_binary
// 示例如下
cc_library(
    name = "hello_great_lib",
    srcs = ["hello_great_lib.cpp"],
    hdrs = ["hello_great.h"]
    // deps = [""]
)
cc_binary(
    name = "hello_world",
    srcs = ["hello_world.cpp"],
    deps = [":hello_great_lib"] // :表示相对路径的当前目录下
)

// 跨目录依赖

//方式一:

// .h文件的目录
cc_library(
    name = "hello_great_lib",
    srcs = ["hello_great_lib.cpp"],
    hdrs = ["hello_great.h"]
    visibility = ["//demo_main:__pkg__"]  // 表示对另一个demo_main目录下的文件可见,用于开放权限
    // deps = [""]
)

// main所在目录
cc_binary(
    name = "hello_world",
    srcs = ["hello_world.cpp"],
    deps = ["//demo_lib:hello_great_lib"] // :表示相对路径的当前目录下
)

// 方式二:
// 可以在.h文件的目录的BUILD首行写一句package(default_visibility = ["//visibility:public"])
// 即可对所有的目录都可见

 

posted @ 2023-07-09 22:04  WTSRUVF  阅读(35)  评论(0)    收藏  举报