如何在CMake文件中添加头文件路径

时间:2012-10-12 10:34:59

标签: cmake opencl

我是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文件中?

3 个答案:

答案 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)

答案 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,它与我试过的其他脚本不兼容。