在bazel中未找到Glob 我现在使用BAZEL来构建C++项目。这是我的工作区文件: cc_library( name = "Boost", srcs = glob(["/usr/local/lib/libboost*.so"]), hdrs = glob(["/home/duttama/boost_1_55_0/**/*.h"]), ) cc_library( name = "OpenCV", srcs = glob(["/usr/lib/x86_64-linux-gnu/libopencv*.so"]), hdrs = glob(["/home/duttama/opencv-2.4.13/**/*.h"]), ) cc_library( name = "AffectivaSources", srcs = glob(["/root/affdex-sdk/lib/*.so"]), hdrs = glob(["/root/affdex-sdk/include/*.h"]), ) new_local_repository( name = "affectivalibrary", path = "/root/affdex-sdk/", build_file = "BUILD.affectiva", )

在bazel中未找到Glob 我现在使用BAZEL来构建C++项目。这是我的工作区文件: cc_library( name = "Boost", srcs = glob(["/usr/local/lib/libboost*.so"]), hdrs = glob(["/home/duttama/boost_1_55_0/**/*.h"]), ) cc_library( name = "OpenCV", srcs = glob(["/usr/lib/x86_64-linux-gnu/libopencv*.so"]), hdrs = glob(["/home/duttama/opencv-2.4.13/**/*.h"]), ) cc_library( name = "AffectivaSources", srcs = glob(["/root/affdex-sdk/lib/*.so"]), hdrs = glob(["/root/affdex-sdk/include/*.h"]), ) new_local_repository( name = "affectivalibrary", path = "/root/affdex-sdk/", build_file = "BUILD.affectiva", ),c++,opencv,build,bazel,C++,Opencv,Build,Bazel,这是我的构建文件: cc_binary( name = "video-demo", srcs = ["video-demo.cpp"], deps = ["//lib:OpenCV", "//lib:AffectivaSources", "//lib:Boost", ], ) 当我运行它时,会出现以下错误: ERROR: /root/sdk-samples/WORKSPACE:17:12: Traceback (most recent c

这是我的构建文件:

cc_binary(
name = "video-demo",
srcs = ["video-demo.cpp"],
deps = ["//lib:OpenCV",
            "//lib:AffectivaSources",
            "//lib:Boost",
],
)    
当我运行它时,会出现以下错误:

ERROR: /root/sdk-samples/WORKSPACE:17:12: Traceback (most recent call last):
File "/root/sdk-samples/WORKSPACE", line 15
    cc_library(name = "AffectivaSources", srcs = ..."]), ..."]))
File "/root/sdk-samples/WORKSPACE", line 17, in cc_library
    glob
name 'glob' is not defined

我的问题是为什么它找不到glob函数。我不确定在工作区文件中还需要指定什么,或者如何导入这个glob函数

工作区文件不适用于
cc_二进制
/
cc_规则
;它用于定义项目范围的规则,例如外部依赖项,而glob函数在工作区文件中不可用。有关工作区规则,请参见

看起来你把C++依赖项导入到你的项目中:检查<代码> NeXOLLARAL存储库规则。这允许您指向本地系统中的文件夹。它将要求您编写包含每个外部依赖项的相应

cc_库
规则的构建文件

例如,在工作区文件中:

cc_library(
name = "Boost",
srcs = glob(["/usr/local/lib/libboost*.so"]),
hdrs = glob(["/home/duttama/boost_1_55_0/**/*.h"]),
)


cc_library(
name = "OpenCV",
srcs = glob(["/usr/lib/x86_64-linux-gnu/libopencv*.so"]),
hdrs = glob(["/home/duttama/opencv-2.4.13/**/*.h"]),
)


cc_library(
name = "AffectivaSources",
srcs = glob(["/root/affdex-sdk/lib/*.so"]),
hdrs = glob(["/root/affdex-sdk/include/*.h"]),
)
new_local_repository(
  name = "affectivalibrary",
  path = "/root/affdex-sdk/",
  build_file = "BUILD.affectiva",
)
在项目中,创建一个
BUILD.affectiva

cc_library(
  name = "aff",
  srcs = glob(["lib/*.so"]),
  hdrs = glob(["include/*.h"]),
)
完成此操作后,您可以在生成文件中使用以下语法依赖它们:

cc_binary(
  name = "video-demo",
  srcs = ["video-demo.cpp"],
  deps = ["@affectivalibrary//:aff", ...]
)
我还看到您在
srcs
/
hdrs
属性中使用绝对文件路径-glob模式不能是绝对的。请参阅此处的生成文件目标标签语法:

如果您仍然困惑,BAZELL存储库中有一个C++实例: