3
我试图用巴泽勒编译和发布基于OpenCV的C++代码,我现在面临一个问题,我解决不了。巴泽尔建立与OpenCV的3.3依赖
我建立和从源安装OpenCV 3.3,上一个Ubuntu 16.04 LTS,具有CUDA支持(CUDA 8)。我将它安装在标准目录/ usr/local中。
考虑它,我创建了这个工作区文件项目:
new_local_repository(
name = "opencv",
path = "/usr/local",
build_file = "opencv.BUILD",
)
的opencv.BUILD包含:
cc_library(
name = "opencv",
srcs = glob(["lib/*.so*"]),
hdrs = glob(["include/**/*.hpp"]),
includes = ["include"],
visibility = ["//visibility:public"],
linkstatic = 1,
)
我可以用用它自己的代码:
cc_binary(
name = "main",
srcs = ["main.cc"],
deps = [
"@opencv//:opencv"
],
)
但在OpenCV的一些源文件,如:
/usr/local/include/opencv2/flann/flann_base.hpp
包括头从同一目录下的文件,如:
#include "general.h"
当我建立与巴泽尔,我得到这个错误:
ERROR: /home/damien/main/BUILD:1:1: C++ compilation of rule '//main:main' failed (Exit 1)
In file included from external/opencv/include/opencv2/flann.hpp:48:0,
from external/opencv/include/opencv2/opencv.hpp:62,
from main/main.cc:1:
external/opencv/include/opencv2/flann/flann_base.hpp:38:21: fatal error: general.h: No such file or directory
(general.h中是在同一目录作为flann_base.hpp)。
如果我重写#include指令为:
#include "opencv2/flann/general.h"
它编译好。但这不是一个方便的解决方案。
所以我的问题是:有没有办法告诉巴泽勒找头在同一个目录中这个库中的“当前”文件?我查看Bazel的每个C++指令,但我没有看到任何实现它的方法。
预先感谢您。
这整个问答对帮助了我很多人!像魅力一样工作。谢谢。 – nipunasudha