你如何在Qt Creator项目中包含OpenCL?

时间:2013-07-04 15:53:44

标签: qt qt-creator

我认为这是一个简单的问题,但我无法弄清楚。在Visual Studio中,您可以通过项目属性对话框添加包含目录,库目录和依赖项(OpenCL.lib)。

但是在Qt Creator中它允许你添加一个外部库但是它不能帮助你设置头文件并输入头文件的绝对路径不起作用。将头文件添加到.pro文件似乎也不起作用。

所以我添加了外部库

Add library dialog

然后我尝试在INCLUDEPATH

中添加头文件的路径
INCLUDEPATH += $$PWD/../../../../../../Program Files (x86)/AMD APP/lib/x86    
               $$PWD/../../../../../../Program Files (x86)/AMD APP/include

Screenshot of code

这次它给出的错误是:

Screenshot of error

但我也收到了:

"Can't open File.obj" // this happens if I just add the External Library and then click build
"No such file or directory 'C:/Program Files (x86)/AMD APP/include/CL/cl.h'" // but that file does exist.

对于任何需要它的人来说,最终有效的.pro文件是

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = clTest100
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

win32:CONFIG(release, debug|release): LIBS += -Lc:/opencl/lib/x86/ -lOpenCL
else:win32:CONFIG(debug, debug|release): LIBS += -Lc:/opencl/lib/x86/ -lOpenCL

INCLUDEPATH += c:/opencl/include
DEPENDPATH += c:/opencl/include

2 个答案:

答案 0 :(得分:4)

问题很简单:空格Spaces have spatial meaning他们将专业文件中的值分开。 您必须包含包含双引号空格的路径和文件名!

另一个问题是缺少拖尾反斜杠意味着你继续在下一行添加参数,如Phlucious所写。

关闭主题
正确的方法是创建prf file,因为每个使用openCL的项目都会使用相同的设置。此外,每台机器都有不同的库位置,因此每台机器都必须拥有自己的prf文件版本。在其他情况下,您将遇到协作问题(与其他开发人员共享代码)。 如果您使用prf文件,那么您将通过添加项目来添加它:CONFIG += <prf file name>

因此,您的prf文件的内容应如下所示:

INCLUDEPATH += "c:/Program Files (x86)/AMD APP/include"
LIBS += -L"c:/Program Files (x86)/AMD APP/lib/x86" -lOpenCL

<小时/> 括号可能存在​​类似问题。我从来没有在我的项目中走这样的道路也可能是个问题 在下一次尝试中,尝试使用单斜杠的scape括号(不要使用相对路径):

INCLUDEPATH += "c:/Program Files \(x86\)/AMD APP/include"
LIBS += -L"c:/Program Files \(x86\)/AMD APP/lib/x86" -lOpenCL

如果这不起作用,请尝试使用三斜线进行转义(我喜欢这种方法的一些治疗链接):

INCLUDEPATH += "c:/Program Files \\\(x86\\\)/AMD APP/include"
LIBS += -L"c:/Program Files \\\(x86\\\)/AMD APP/lib/x86" -lOpenCL

也许更好的解决方案是将这些库安装到一个更方便的目录中,该目录不包含括号和空格。

您还可以尝试添加到pro文件,以便进行调试:

message(LIBS $$LIBS)
message(INCLUDEPATH $$INCLUDEPATH)

答案 1 :(得分:1)

当你希望表达式在PRO文件中分割多行时,你需要在除最后一行之外的每一行的末尾加一个反斜杠。

例如,您的

INCLUDEPATH += $$PWD/../../../../../../Program Files (x86)/AMD APP/lib/x86    
               $$PWD/../../../../../../Program Files (x86)/AMD APP/include

应该是

INCLUDEPATH += $$PWD/../../../../../../Program Files (x86)/AMD APP/lib/x86 \
               $$PWD/../../../../../../Program Files (x86)/AMD APP/include