我是OpenCL的新手。我已经在互联网的帮助下用OpenCL写了一个向量加法代码。我已经包含了一个头文件,即使用#include的CL/cl.h。
我使用的是NVIDIA显卡,OpenCL实现是NVIDIA_GPU_Computing_SDK。我的OpenCL头文件驻留在路径/opt/NVIDIA_GPU_Computing_SDK/OpenCL/common/inc中。我可以通过linux终端运行OpenCL程序,在编译我的代码时添加这个路径。但现在我想为这段代码编写CMake文件。由于此路径问题,CMake文件在C程序中运行良好,但在OpenCL程序中却无法正常运行。在终端中,我曾经输入$cmake .,在这个$make之后,它会搜索一个由cmake创建的Makefile,现在我的错误是在输入命令make之后
fatal error: CL/cl.h: No such file or directory!现在告诉我如何将这个头文件包含到CMake文件中?
发布于 2012-10-12 20:19:28
您需要将以下代码行放入CMakeLists.txt:
include_directories(/opt/NVIDIA_GPU_Computing_SDK/OpenCL/common/inc)
link_directories(/opt/NVIDIA_GPU_Computing_SDK/OpenCL/common/<lib or something similar>)
add_executable(yourexe src1.c ...)
target_link_libraries(yourexe OpenCL)但要注意这是不可移植的,因为OpenCL SDK可能在另一台机器上的其他地方。正确的方法是使用FindOpenCL.cmake模块。
发布于 2012-10-12 20:21:04
也许您可以使用CMake "find“脚本,如下所示:
OpenCL编程指南手册中的CMake文件示例:http://code.google.com/p/opencl-book-samples/source/browse/trunk/CMakeLists.txt?r=14
发布于 2014-04-16 22:58:22
我正在寻找可以在Windows,OSX和Linux上很好工作的FindOpenCL.cmake宏…我找不到在每个平台上都能很好工作的,所以我写了一个新的,我在几个项目中使用(webcl-validator和opencl-testsuite)。
https://github.com/elhigu/cmake-findopencl
特别是在这个版本中对Windows的支持得到了改进。
在Windows中,它检查是否应该使用64位或32位库,并尝试根据Nvidia、英特尔和AMD OpenCL SDK设置的环境变量来查找库。
它还试图在Cygwin中找到.lib,这与我尝试过的其他脚本不起作用。
https://stackoverflow.com/questions/12857189
复制相似问题