首页 > 解决方案 > 使用 Clang 使用 Bazel 构建 OpenCV

问题描述

tl;nvcc 博士在构建 OpenCV 时抱怨 Clang 版本。我如何避免首先调用 nvcc?

我已经使用 Bazel 在 Bazelrules_foreign_cc中构建了一个 CMake 项目(OpenCV 4.2)。IE

cmake(
    name = "opencv_lib",
    additional_inputs = ["@opencv_contrib//:modules"],
    cache_entries = {
        "BUILD_SHARED_LIBS": "ON",
        "BUILD_LIST": "cudev, cudawarping, cudnn, core, highgui,imgcodecs,imgproc",
        "WITH_CUDA": "ON",
        "WITH_CUDNN": "ON",
        "WITH_OPENMP": "OFF",
        "OPENCV_EXTRA_MODULES_PATH": "$$EXT_BUILD_ROOT$$/external/opencv_contrib/modules",
        "CUDA_ARCH_BIN": "'7.0 7.2 7.5'",
        "WITH_TIFF": "OFF",
        "WITH_WEBP": "OFF",
        "CMAKE_HOST_COMPILER": "/usr/bin/clang++-11",
        "CMAKE_CUDA_HOST_COMPILER": "/usr/bin/clang++-11",
        "CMAKE_CUDA_COMPILER_ID": "Clang",
        "CMAKE_CUDA_COMPILER": "Clang",
    },

我已将 CMAKE_CUDA_HOST_COMPILER 和 CMAKE_HOST_COMPILER 设置为 clang,并且构建输出显示 Clang 正在用于 C 和 C++ 编译。

- The CXX compiler identification is Clang 11.1.0
-- The C compiler identification is Clang 11.1.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/clang-11 - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/clang-11 - skipped
-- Detecting C compile features
-- Detecting C compile features - done

似乎 Clang 正在通过 NVCC 调用,如下面的错误所示。

nvcc fatal   : The version ('11.1') of the host compiler ('clang') is not supported

非常感谢任何有关避免调用 NVCC 的帮助,因为此版本的 NVCC 没有避免不兼容编译器警告的选项。

标签: cmakebazel

解决方案


推荐阅读