Skip to content

Latest commit

 

History

History

cmake

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

Bazel Rule

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})

cc_library

  1. bazel
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",
    ],
)
  1. cmake
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
)

cc_binary

  1. bazel
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",
    ],
)
  1. cmake
cc_binary (
        NAME network_nio_main
        SRCS network/nio_main.cpp
        DEPS cpp::network cpp::log
)

cc_test

  1. bazel

https://google.github.io/googletest/quickstart-bazel.html

cc_test(
  name = "hello_test",
  size = "small",
  srcs = ["hello_test.cc"],
  deps = ["@com_google_googletest//:gtest_main"],
)
  1. cmake

https://google.github.io/googletest/quickstart-cmake.html

cc_test (
        NAME utils_time_test
        SRCS utils/time_test.cpp
        DEPS cpp::utils
)

TODO

  1. 生成pkgconfig文件