QT變量用於將Qt模塊包含到您的項目中。通過添加opengl,您可以添加包含Qt代碼的Qt OpenGL模塊,該模塊使用OpenGL(以及指向它的鏈接)。如果通過「包含」來表示鏈接,則比Qt的OpenGL模塊(libQtOpenGL.so)鏈接各種OpenGL庫。此外,Qt模塊還包含Qt OpenGL模塊的頭文件,該模塊又包含OpenGL頭文件。
OpenGL頭文件和OpenGL庫是您的操作系統保留這些內容的任何位置。你的項目知道這些是因爲你的平臺的Qt mkspecs,無論它是什麼。在mkspecs中,包含路徑和鏈接路徑已經包含在內。
例如,現在我在Mac OS X上,並且Qt mkspecs安裝在/usr/local/Qt4.8/mkspecs中。這裏我有所有的平臺描述,通常你可以找到mac.conf,這是我平臺描述的一部分。它裏面你可以看到:當Qt Creator中(QMAKE)被要求出示一個Makefile的任何應用程序使用
QMAKE_INCDIR_OPENGL = /System/Library/Frameworks/OpenGL.framework/Headers \
/System/Library/Frameworks/AGL.framework/Headers/
此信息。這樣你的應用程序就知道在哪裏可以找到OpenGL的頭文件。只有當您添加opengl模塊時,您的項目纔會自動將其添加到包含路徑中。
再舉一個例子,這是定義爲Linux平臺的一部分:
...
QMAKE_INCDIR =
QMAKE_LIBDIR =
QMAKE_INCDIR_X11 = /usr/X11R6/include
QMAKE_LIBDIR_X11 = /usr/X11R6/lib
QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
QMAKE_INCDIR_OPENGL = /usr/X11R6/include
QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
QMAKE_INCDIR_OPENGL_ES1 = $$QMAKE_INCDIR_OPENGL
QMAKE_LIBDIR_OPENGL_ES1 = $$QMAKE_LIBDIR_OPENGL
QMAKE_INCDIR_OPENGL_ES2 = $$QMAKE_INCDIR_OPENGL
QMAKE_LIBDIR_OPENGL_ES2 = $$QMAKE_LIBDIR_OPENGL
QMAKE_INCDIR_EGL =
QMAKE_LIBDIR_EGL =
QMAKE_INCDIR_OPENVG =
QMAKE_LIBDIR_OPENVG =
...
我想你可以在你自己明白這是什麼意思;-)
因此,要回答你的問題:包含路徑和到OpenGL庫的鏈接路徑包含在Makefile中,可以爲您的應用程序生成Makefile文件,以獲取存儲在位於系統某處的mkspec文件中的信息。實際的OpenGL頭文件和庫位於系統的默認位置,這與Qt本身無關。如果您直接使用OpenGL庫(或者您可能不需要,取決於),則可能需要在源代碼中包含標頭,但包含路徑應該已經由您的mkspec文件提供。
編輯:看加入OpenGL的模塊時,什麼是自動發生的:這是命令行Qt Creator的使用編譯C++文件而不OpenGL的模塊(在Mac上):
g++ -c -pipe -g -gdwarf-2 -arch x86_64 -Xarch_x86_64 -mmacosx-version-min=10.5 -Wall -W -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Qt4.8/mkspecs/macx-g++ -I../TextEdit -I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/usr/include/QtCore -I/Library/Frameworks/QtGui.framework/Versions/4/Headers -I/usr/include/QtGui -I/usr/include -I. -I. -I../TextEdit -I. -F/Library/Frameworks -o main.o ../TextEdit/main.cpp
現在這是什麼情況添加後:
g++ -c -pipe -g -gdwarf-2 -arch x86_64 -Xarch_x86_64 -mmacosx-version-min=10.5 -Wall -W -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Qt4.8/mkspecs/macx-g++ -I../TextEdit -I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/usr/include/QtCore -I/Library/Frameworks/QtGui.framework/Versions/4/Headers -I/usr/include/QtGui -I/Library/Frameworks/QtOpenGL.framework/Versions/4/Headers -I/usr/include/QtOpenGL -I/usr/include -I/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers -I/System/Library/Frameworks/AGL.framework/Headers -I. -I. -I../TextEdit -I. -F/Library/Frameworks -o main.o ../TextEdit/main.cpp
您的項目已被告知在哪裏查找OpenGL標頭。
請添加有關您的操作系統和GPU的信息。其相關。 –
你是否需要這些聲明來自動完成或學習使用Qt的OpenGL? –