我认为这是一个简单的问题,但我无法弄清楚。在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
答案 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