将库导入QTCreator

时间:2015-09-19 08:17:45

标签: qt opengl build cmake

我正在QT Creator中创建一个OpenGL项目,并希望稍后导入GLFW和其他可能的库。 我编译并导入了GLFW并且能够通过它导入它 #include <GLFW/glfw3.h>

Qt Creator甚至可以自动填充glfw方法。但是,当我试图调用其中一个时(例如glfwInit();),编译器抛出了以下错误:

 Undefined symbols for architecture x86_64:
  "_CFArrayAppendValue", referenced from:
      _addJoystickElement in libglfw3.a(iokit_joystick.m.o)
  "_CFArrayApplyFunction", referenced from:
      __glfwInitJoysticks in libglfw3.a(iokit_joystick.m.o)
      _addJoystickElement in libglfw3.a(iokit_joystick.m.o)
  "_CFArrayCreateMutable", referenced from: 

...等

我假设它无法找到这些方法的实现。

我通过以下程序导入了GLFW:

1。我用CMake构建了一个Unix脚本。
2。我在生成的makefile上的终端中运行了“make”。这创建了一个名为“libglfw3.a”的文件。我通过QT将库导入到项目中,将库设置为libglfw3.a并将路径包含为“mypath / include /”(此文件夹包含另一个名为GLFW的文件夹,其中包含glfw3.h)。

然后,

QT Creator将以下内容输入QT项目文件。

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/glfw-3.1.1/src/release/ -lglfw3
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/glfw-3.1.1/src/debug/ -lglfw3
else:unix: LIBS += -L$$PWD/glfw-3.1.1/src/ -lglfw3
INCLUDEPATH += $$PWD/glfw-3.1.1/include
DEPENDPATH += $$PWD/glfw-3.1.1/include
win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/glfw-3.1.1/src/release/libglfw3.a
else:win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/glfw-3.1.1/src/debug/libglfw3.a
else:win32:!win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/glfw-3.1.1/src/release/glfw3.lib
else:win32:!win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/glfw-3.1.1/src/debug/glfw3.lib
else:unix: PRE_TARGETDEPS += $$PWD/glfw-3.1.1/src/libglfw3.a

非常感谢帮助。我花了至少10个小时试图弄清楚如何将GL库导入QT Creator,但我能找到的只是针对XCode,Visual Studio等的CMake教程。

我最好只修改QT .pro文件,因为我没有CMake的经验,但如果没有其他选择,那就没关系。 我正在使用Mac 10.10.15上的QT创建器进行开发。

1 个答案:

答案 0 :(得分:0)

如果有人好奇,我想出来了。

我按照此处的程序:Compiling with GLFW3, linker errors 'undefined reference'

我起初并不认为这是相关的,因为它特别指的是在XCode上构建,但事实证明你必须使用QT Creator做同样的事情。 右键单击项目,导入库 - &gt;系统/图书馆/框架 - &gt;并导入Cocoa,CoreVideo和IOKit。

我的.pro文件在完成所有操作后添加了以下行

mac: LIBS += -framework Cocoa
else:unix|win32: LIBS += -lCocoa

mac: LIBS += -framework IOKit
else:unix|win32: LIBS += -lIOKit

mac:LIBS + = -framework CoreVideo else:unix | win32:LIBS + = -lCoreVideo

相关问题