bazel的规则定义语法实际上非常优与cmake,cmake会显得非常的丑陋且非常臃肿,因此很多开源项目都封装了cmake rule,方便进行依赖管理.
# 添加依赖
include (cmake/cc_library.cmake)
include (cmake/cc_binary.cmake)
include (cmake/cc_test.cmake)
# 设置项目根路径为include dir
list (APPEND CPP_COMMON_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR})
load("@rules_cc//cc:defs.bzl", "cc_library")
cc_library(
name = "times",
srcs = [
"times.cpp",
],
hdrs = ["times.h"],
visibility = ["//visibility:public"],
deps = [
"//utils:times",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
],
)
cc_library (
NAME cpp_network
ALIAS cpp::network
SRCS listener.cpp
HDRS header.h utils.h task_queue.h listener.h
DEPS event cpp::utils
)
load("@rules_cc//cc:defs.bzl", "cc_binary") # 高版本的bazel不需要load cc_binary
cc_binary(
name = "main",
srcs = [
"main.cpp",
],
deps = [
"//utils:times",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
],
)
cc_binary (
NAME network_nio_main
SRCS network/nio_main.cpp
DEPS cpp::network cpp::log
)
cc_test(
name = "hello_test",
size = "small",
srcs = ["hello_test.cc"],
deps = ["@com_google_googletest//:gtest_main"],
)
cc_test (
NAME utils_time_test
SRCS utils/time_test.cpp
DEPS cpp::utils
)
- 生成
pkgconfig
文件