我是新来的OpenCL。 我已经写在OpenCL的矢量附加码与互联网的帮助。 我已经包括一个头文件即CL/cl.h
使用#include
。
我使用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的文件?
你需要把这些线路到的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
模块。
也许你可以使用CMake的“发现”的剧本,如:
- http://gitorious.org/findopencl/findopencl/blobs/master/FindOpenCL.cmake
- http://code.google.com/p/opencl-book-samples/source/browse/trunk/cmake/FindOpenCL.cmake?r=14
从OpenCL的编程指南书CMake的文件例如: http://code.google.com/p/opencl-book-samples/source/browse/trunk/CMakeLists.txt?r=14
我一直在寻找FindOpenCL.cmake宏这将在Windows,OSX和Linux很好地工作......我找不到任何它做每一个平台上很好地工作,所以我写了新的,我在几个项目中使用(webcl-验证和OpenCL-测试套件)。
https://github.com/elhigu/cmake-findopencl
尤其是Windows的支持在这一个改进。
在Windows中,它会检查是否应使用64位或32位lib和它也试图从根据英伟达,英特尔和AMD的OpenCL的SDK设置环境变量找到库。
它还试图找到的.lib Cygwin中,其中并没有与我尝试过其他脚本。