【发布时间】:2021-09-22 15:35:44
【问题描述】:
我有以下问题: 假设我的项目结构是:
├── project
│ ├── include
| | ├── BUILD
| | └── library.hpp
│ ├── src
| | ├── BUILD
| | └── main.cpp
| ├── test
| | ├── BUILD
| | └── library_test.cpp
└── WORKSPACE
library.hpp是一个包含模板类实现的文件,它包含在main.cpp和library_test.cpp中。
如何准备BUILD 文件,以便在编译library_test.cpp 和main.cpp 时不会出现编译错误:
src/main.cpp:2:10: fatal error: shared_ptr.hpp: No such file or directory
2 | #include "library.hpp"
| ^~~~~~~~~~~~~~~~
compilation terminated.
我尝试的是:
include/BUILD
load("@rules_cc//cc:defs.bzl", "cc_library")
cc_library(
name = "library",
srcs = ["library.hpp"],
includes = ["include"],
visibility = [
"//visibility:public",
]
)
在上面我还尝试使用hdrs 和textual_hdrs 而不是srcs。
test/BUILD:
load("@rules_cc//cc:defs.bzl", "cc_test")
cc_test(
name = "library_test",
srcs = ["library_test.cpp"],
deps = [
"@gtest//:gtest",
"@gtest//:gtest_main",
],
includes = ["include"],
copts = ["-Iproject/include"],
)
并且要彻底我的WORKSPACE:
load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
git_repository(
name = "gtest",
remote = "https://github.com/google/googletest",
branch = "v1.10.x",
)
根据我在互联网上看到的官方 bazel 教程、一些演示文稿或类似问题,我有一个问题要自己解决。它们仅在库中编写的函数定义在 cpp 文件中并且可以编译为目标文件的情况下显示使用 cc_library。
【问题讨论】:
标签: c++ cmake build googletest bazel