I get the error "error: CL/cl.h: No such file or directory" when I try to build a project on Qt

I get the error "error: CL/cl.h: No such file or directory" when I try to build a project on Qt

我正在尝试通过 Qt Creator 运行 我系统上的 "Valar" 基准应用程序,但在构建代码时出现错误:

https://github.com/Frinhard/valar-bench

我输入命令:autoreconf -ivf 并得到以下输出:

autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force -I m4
aclocal: couldn't open directory `m4': No such file or directory
autoreconf: aclocal failed with exit status: 1

我所有的错误都与文件 m4 有关,所以 我创建了一个空目录并将其命名为 m4。在那之后,我能够 运行 命令 autoreconf --install 并且我不再总是得到同样的错误。此外,Makefile.in 还与许多其他文件一起生成。

link显示我运行autoreconf --install:

后目录的状态

我在命令行运行命令qmake --project,生成了.pro文件。

我在 Qt Creator 中打开了新生成的 .pro 文件,link编辑了 OpenCL 库以及 "bin" 目录中的其他 OpenCL 文件。

LIBS += -L$$PWD/../../usr/local/cuda-7.0/lib64/ -lOpenCL

INCLUDEPATH += $$PWD/../../usr/local/cuda-7.0/lib64 $$PWD/../../usr/local/cuda-7.0/include
DEPENDPATH += $$PWD/../../usr/local/cuda-7.0/lib64

DISTFILES += \
    ../../Downloads/valar-bench/valar-bench/bin/amd/CLSource/createDescriptors_kernel.cl \
    ../../Downloads/valar-bench/valar-bench/bin/amd/CLSource/getOrientation_kernels.cl \
    ../../Downloads/valar-bench/valar-bench/bin/amd/CLSource/hessianDet_kernel.cl \
    ../../Downloads/valar-bench/valar-bench/bin/amd/CLSource/integralImage_kernels.cl \
    ../../Downloads/valar-bench/valar-bench/bin/amd/CLSource/nearestNeighbor_kernel.cl \
    ../../Downloads/valar-bench/valar-bench/bin/amd/CLSource/nonMaxSuppression_kernel.cl \
    ../../Downloads/valar-bench/valar-bench/bin/amd/CLSource/normalizeDescriptors_kernel.cl \
    ../../Downloads/valar-bench/valar-bench/bin/nvidia/CLSource/createDescriptors_kernel.cl \
    ../../Downloads/valar-bench/valar-bench/bin/nvidia/CLSource/getOrientation_kernels.cl \
    ../../Downloads/valar-bench/valar-bench/bin/nvidia/CLSource/hessianDet_kernel.cl \
    ../../Downloads/valar-bench/valar-bench/bin/nvidia/CLSource/integralImage_kernels.cl \
    ../../Downloads/valar-bench/valar-bench/bin/nvidia/CLSource/nearestNeighbor_kernel.cl \
    ../../Downloads/valar-bench/valar-bench/bin/nvidia/CLSource/nonMaxSuppression_kernel.cl \
    ../../Downloads/valar-bench/valar-bench/bin/nvidia/CLSource/normalizeDescriptors_kernel.cl

点击 Build 后出现以下错误:

    17:27:13: Running steps for project valar-bench...
    17:27:13: Configuration unchanged, skipping qmake step.
    17:27:13: Starting: "/usr/bin/make" 
    Makefile:941: warning: overriding commands for target `eventlist.o'
    Makefile:875: warning: ignoring old commands for target `eventlist.o'
    Makefile:1014: warning: overriding commands for target `main.o'
    Makefile:960: warning: ignoring old commands for target `main.o'
    g++ -c -pipe -g -std=gnu++0x -Wall -W -D_REENTRANT -fPIC -DQT_QML_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I../valar-bench -I. -I../valar-bench -I../valar-bench/clhaptic/libmisc -I../valar-bench/fir -I../valar-bench/clhaptic/libanalysis-devices -I../valar-bench/clhaptic/libprofiler -I../valar-bench/clhaptic/libtopology -I../valar-bench/clhaptic/librules -I../valar-bench/clhaptic/libinterceptor -I../valar-bench/clsurf/src -I../valar-bench/particles/Common/Base -I../valar-bench/particles/Common/Math -I../valar-bench/particles/TestBed/Demos -I../valar-bench/particles/Common/Utils -I../valar-bench/particles/TestBed -I../valar-bench/particles/Common/DeviceUtils -I../valar-bench/particles/Common/Geometry -I../valar-bench/particles -I/root/Downloads/valar-bench/valar-bench/../../usr/local/cuda-7.0/lib64 -I/root/Downloads/valar-bench/valar-bench/../../usr/local/cuda-7.0/include -I/opt/QtInstallation/5.6/gcc_64/include -I/opt/QtInstallation/5.6/gcc_64/include/QtGui -I/opt/QtInstallation/5.6/gcc_64/include/QtCore -I. -I/opt/QtInstallation/5.6/gcc_64/mkspecs/linux-g++ -o FIR_tapchange.o ../valar-bench/fir/FIR_tapchange.cpp
    ../valar-bench/fir/FIR_tapchange.cpp:16:19: error: CL/cl.h: No such file or directory
    In file included from ../valar-bench/fir/FIR_tapchange.cpp:18:
    ../valar-bench/clhaptic/libmisc/opencl_utils.h:40: error: 'cl_device_id' was not declared in this scope
    ../valar-bench/clhaptic/libmisc/opencl_utils.h:42: error: variable or field 'ad_sync' declared void
    ../valar-bench/clhaptic/libmisc/opencl_utils.h:42: error: 'cl_command_queue' was not declared in this scope
    ../valar-bench/clhaptic/libmisc/opencl_utils.h:46: error: 'cl_mem' does not name a type
    ../valar-bench/clhaptic/libmisc/opencl_utils.h:48: error: ISO C++ forbids declaration of 'cl_int' with no type
    ../valar-bench/clhaptic/libmisc/opencl_utils.h:48: error: expected ',' or '...' before 'status'
    ../valar-bench/clhaptic/libmisc/opencl_utils.h:50: error: 'cl_device_id' has not been declared
    ../valar-bench/clhaptic/libmisc/opencl_utils.h:52: error: variable or field 'ad_setKernelArg' declared void
    ../valar-bench/clhaptic/libmisc/opencl_utils.h:52: error: 'cl_kernel' was not declared in this scope
    ../valar-bench/clhaptic/libmisc/opencl_utils.h:52: error: expected primary-expression before 'unsigned'
    ../valar-bench/clhaptic/libmisc/opencl_utils.h:52: error: expected primary-expression before 'size'
    ../valar-bench/clhaptic/libmisc/opencl_utils.h:53: error: expected primary-expression before 'void'
    ../valar-bench/clhaptic/libmisc/opencl_utils.h:59: error: 'cl_program' does not name a type
    ../valar-bench/clhaptic/libmisc/opencl_utils.h:63: error: 'cl_program' does not name a type
    ../valar-bench/clhaptic/libmisc/opencl_utils.h:76: error: 'cl_platform_id' was not declared in this scope
    In file included from ../valar-bench/fir/FIR_tapchange.cpp:19:
    ../valar-bench/fir/FIR_tapchange.h:12: error: 'cl_command_queue' does not name a type
    In file included from ../valar-bench/clhaptic/libanalysis-devices/analysis-devices.h:6,
.                    
.
.
.
.
    make: *** [FIR_tapchange.o] Error 1
    17:27:13: The process "/usr/bin/make" exited with code 2.
    Error while building/deploying project valar-bench (kit: Desktop Qt 5.6.0 GCC 64bit)
    When executing step "Make"
    17:27:13: Elapsed time: 00:00.

以下是我掌握的关于qmake的资料:

Qmake version: 1.07a (Qt 3.3.8b)
Qmake is free software from Trolltech ASA.

请指导我这件事。

当我更改设置路径的方法后问题得到解决。

在我的问题中,我按以下方式设置了路径:

LIBS += -L$$PWD/../../usr/local/cuda-7.0/lib64/ -lOpenCL

INCLUDEPATH += $$PWD/../../usr/local/cuda-7.0/lib64 $$PWD/../../usr/local/cuda-7.0/include
DEPENDPATH += $$PWD/../../usr/local/cuda-7.0/lib64

我按照以下方式再次设置路径,错误得到修复:

LIBS += -L/usr/local/cuda-7.0/lib64/ -lOpenCL

INCLUDEPATH += /usr/local/cuda-7.0/lib64/\
               /usr/local/cuda-7.0/include/

我还从 .pro 文件中设置的其他路径中删除了 $$PWD/../.. 部分。

进行这些更改后,我的代码开始 运行 正确。