使用CMake构建时,如何使QtCreator识别OpenGL函数的自动完成?

使用CMake构建时,如何使QtCreator识别OpenGL函数的自动完成?,qt,opengl,cmake,Qt,Opengl,Cmake,我开始为我的应用程序使用Qt+OpenGL。我还注意到,可以使用CMake将应用程序构建为 然而,我无法让Qt识别OpenGL函数的自动完成。应用程序构建正确,运行正常 是否有我必须添加到CMake文件或Qt中的设置才能获得自动完成 如果需要,这是我的CMakeLists.txt CMAKE_MINIMUM_REQUIRED( VERSION 2.8 ) PROJECT( QtOpenGLTemplate ) FIND_PACKAGE( Qt5Widgets REQUIRED ) IF( Q

我开始为我的应用程序使用Qt+OpenGL。我还注意到,可以使用CMake将应用程序构建为

然而,我无法让Qt识别OpenGL函数的自动完成。应用程序构建正确,运行正常

是否有我必须添加到CMake文件或Qt中的设置才能获得自动完成

如果需要,这是我的CMakeLists.txt

CMAKE_MINIMUM_REQUIRED( VERSION 2.8 )

PROJECT( QtOpenGLTemplate )

FIND_PACKAGE( Qt5Widgets REQUIRED )
IF( Qt5Widgets_FOUND )
    MESSAGE( STATUS "Qt5 Widgets module FOUND!" )
ELSE()
    MESSAGE( WARNING "Qt5 Widgets module NOT FOUND!" )
ENDIF()

FIND_PACKAGE( Qt5OpenGL REQUIRED )
IF( Qt5OpenGL_FOUND )
    MESSAGE( STATUS "Qt5 OpenGL module FOUND!" )
ELSE()
    MESSAGE( WARNING "Qt5 OpenGL module NOT FOUND!" )
ENDIF()

FIND_PACKAGE( OpenGL REQUIRED )
IF( OPENGL_FOUND )
    MESSAGE( STATUS "OpenGL FOUND!" )
ELSE()
    MESSAGE( WARNING "OpenGL NOT FOUND!" )
ENDIF()

SET( SOURCES main.cpp GLViewer.cpp )

ADD_EXECUTABLE( QtOpenGLTemplate ${SOURCES} )
TARGET_LINK_LIBRARIES( QtOpenGLTemplate ${OPENGL_LIBRARIES} Qt5::Widgets Qt5::OpenGL )
我从中找到了答案

为了使find_软件包成功,必须在下面找到Qt 5 必须在CMAKE中设置CMAKE_前缀_路径或Qt5_目录 缓存到Qt5WidgetsConfig.cmake文件的位置。最容易 使用CMake的方法是设置CMake_PREFIX_PATH环境变量 到Qt 5的安装前缀

因此,通过将以下行添加到CMakeLists.txt

SET(CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH} /Applications/Qt/5.3/clang_64")

使Qt能够识别和自动完成OpenGL函数。

根据我的经验,它类似于:
LIST(APPEND包含OpenGL\u INCLUDE\u DIRS)
虽然我不确定是否忘记提到我正在OS X下测试,但它可能也必须在Ubuntu上工作。这很奇怪,因为我刚刚尝试了
包含目录(${CUDA_INCLUDE_DIRS})
对于CUDA和Qt来说,识别一切并执行自动补全,因此我遗漏了OpenGL库的一些内容。即使这回答了我的问题,我想问一下,是否有人知道为什么设置这个变量
CMAKE_PREFIX_路径
有效,而使用
INCLUDE_目录
无效?