1

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

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

所以我添加了外部库

添加库对话框

然后我尝试在以下位置添加头文件的路径INCLUDEPATH

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

代码截图

这次它给出的错误是:

错误截图

但我也收到了:

"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
4

2 回答 2

5

问题很简单:空格空格具有空间意义,它们在 pro 文件中分隔值。您必须用双引号将包含空格的路径和文件名括起来!

另一个问题是缺少尾部反斜杠,这意味着您将继续像 Phlucious 所写的那样在下一行添加参数。

题外话
正确的方法是创建prf 文件,因为每个带有 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


括号可能有类似的问题。我从来没有在我的项目中走这条路,因为这也可能是一个问题。
在下一次尝试中,尝试使用单斜杠转义括号(不要使用相对路径):

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)
于 2013-07-08T08:36:24.473 回答
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
于 2013-07-04T21:09:56.797 回答