我在编译具有 GPU 支持的 OpenCV 245 时遇到了很多麻烦。通过一些努力,我设法让 cuda 支持启动并运行,但现在我被困在 opencl 上,问题是:
在编译期间的某个时间点,会生成文件 kernels.cpp,其中包含所有内核函数作为字符串。据我了解,它们是使用 cl2cpp.cmake 脚本从 .cl 文件自动转换的。
我不明白的是从构建中排除了一个文件:在 Visual Studio 项目或 kernels.cpp 中不包括 nonfree_surf.cl (在我的磁盘上,与所有其他 .cl 文件一起)那是自动生成的。这会导致链接时出现未定义的错误。
我尝试将 nonfree_surf.cl 手动添加到 Visual Studio 项目中。这不会改变任何事情。在 ocl 模块的 CMakeLists.txt 中,所有 cl 文件似乎都自动添加了以下行:
file(GLOB CL_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/kernels/*.cl")
我尝试手动将 nonfree_surf 添加到 CL_FILES,但没有效果。
我对 CMake 知之甚少,因此我不太了解发生了什么。有人可以告诉我如何找到这种行为的原因,即:
为什么所有 .cl 文件都添加到我的 VS 项目中,除了 nonfree_surf.cl ?
我该如何纠正这个?
也许我可以手动执行 cl2cpp.cmake 脚本?如果是这样,如何?