我是OpenCL的新手。我在OpenCL的帮助下在Internet上编写了一个矢量加法代码。我使用CL/cl.h
包含了一个头文件,即#include
。
我使用的是NVIDIA显卡,OpenCL实现是NVIDIA_GPU_Computing_SDK。我的OpenCL头文件驻留在此路径/opt/NVIDIA_GPU_Computing_SDK/OpenCL/common/inc
。通过在编译代码时添加此路径,我可以通过linux终端运行OpenCL程序。但现在我想为此代码编写CMake文件。由于此Path问题,CMake文件适用于C程序,但不适用于OpenCL程序。在终端中,我曾经输入$cmake .
,在此$make
之后,它将搜索由cmake创建的Makefile,现在我的错误是在输入命令make
之后
fatal error: CL/cl.h: No such file or directory!
现在告诉我如何将此头文件包含在CMake文件中?
答案 0 :(得分:7)
您需要将这些行放入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
模块。
答案 1 :(得分:2)
也许您可以使用CMake“find”脚本,如:
来自OpenCL编程指南的CMake文件示例:http://code.google.com/p/opencl-book-samples/source/browse/trunk/CMakeLists.txt?r=14
答案 2 :(得分:1)
我一直在寻找可以在Windows,OSX和Linux上运行良好的FindOpenCL.cmake宏...我找不到任何在每个平台上运行良好的宏,所以我写了一个新的,我在一对项目(webcl-validator和opencl-testsuite)。
https://github.com/elhigu/cmake-findopencl
特别是Windows支持在这方面得到了改进。
在Windows中,它会检查是否应该使用64位或32位lib,并且它还会尝试根据Nvidia,Intel和AMD OpenCL SDK设置的环境变量查找库。
它也试图在Cygwin中找到.lib,它与我试过的其他脚本不兼容。