终于我想通了。实际上,它与 CMake 或任何其他构建工具非常不同,以防您有 CMake 背景(就像我一样)。
首先,我假设您确实有一个预构建的 c/c++ 外部库,即带有 include、bin 和 lib 文件夹结构的 C:\boost,还假设您确实有两件更重要的事情:
- 托管您的主文件夹的文件夹工作空间 file.
-
BUILD引用您的主应用程序(包)的文件
主要构建文件应该是:
cc_binary(
name = "hello-bazel",
srcs = ["main.cpp", "SomeClass.h", "SomeClass.cpp"],
deps = ["@boost//:boost_172_shared"],
)
这次我们需要添加另一个构建文件,我们将其命名为 BUILD.boost
放置在应用程序主文件夹的子文件夹中,即 hello-bazel/dependency,如下所示:
hello-bazel -> 示例文件夹
- 工作区 -> 文件
- main -> 托管您的文件夹BUILD、main.cpp、someclass.h 和 someclass.cpp
- 依赖项 -> 托管文件夹构建.boost
Add 构建.boost如上面子文件夹依赖项中所述
包括:
cc_library(
name = "boost_172_shared",
srcs = glob(["lib/*.lib"]),
hdrs = glob( ["include/boost/*.hpp"] + ["include/boost/*.h"] +
["include/boost/**/*.hpp"] + ["include/boost/**/*.h"] +
["include/boost/**/**/**/*.hpp"] + ["include/boost/**/**/**/*.h"] +
["include/boost/**/**/*.hpp"] + ["include/boost/**/**/*.h"] ),
strip_include_prefix = "include/",
visibility = ["//visibility:public"]
)
我们需要如上所示编辑您的 WORKSPACE 文件以包含以下内容:
new_local_repository(
name = "boost",
path = "C:\\Development\\Libraries\\boost\\",
build_file = "dependency\\BUILD.boost",
)
以上新本地存储库是指向外部库的关键,正如 Ondrej K 在评论中提到的那样。