首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MinGW-64构建QT5.15.2:生成错误(缺少EGL/egl.h)

使用MinGW-64构建QT5.15.2:生成错误(缺少EGL/egl.h)
EN

Stack Overflow用户
提问于 2021-06-29 11:50:35
回答 2查看 832关注 0票数 0

几天来,我一直在尝试构建Qt 5.15.2。我修复了几个问题,但我找不到多少关于最后这个错误(或过时的)。

配置成功,但使用mingw32 32-make命令生成失败,出现以下错误:

qwindowseglcontext.h: 45: 10:致命错误: EGL / egl.h:没有此类文件或目录

我知道它缺少一个标题,但我找不到一个可行的解释如何纠正这个问题。经过一些研究,我遇到了https://cn.khronos.org/egl/,但下载链接已经死了,我也看到一些人说使用OpenGL ES是可能的,但我不知道它到底是什么。

如果有人能帮我澄清这件事,我会很感激的。谢谢

以下是编译前用于配置Qt的参数列表:

./ -skip qtimageformats -skip qtwinextras无功能-功能-无功能-功能-大_codecs-无功能组-无功能-计算器小部件-无功能-功能-颜色对话框-无功能-专栏视图-无功能-功能-组合框-不-功能链接按钮-无功能-功能完成器-不-功能菜单-控制菜单-不-功能杯-功能-功能-cupsjobwidget不-特征-时间编辑-无功能-功能- -no-功能-图形-视图-无特征-组框-无特征-hijricalendar-无特征-功能-icu-无特征-标识-非特征-特征-image特征-图像-启发式_掩膜-无特征-图像_文本-无特征-图像格式_bmp-无特征-特征-图像格式_jpeg-无特征-功能-图像格式_xbm-不-特征-inotify-不-特征-输入对话框-无特征-岛屿文明日历-无特征-itemviews无特征-功能-jpeg-功能-不-特征-格式_xbm-不-特征-不-特征-输入对话框-无特征-不-岛-文明日历-不-特征-itemviews无特征-功能-xbm-不-特征-不-特征-输入对话框-无特征-不-岛-文明日历-不-特征-itemviews无特征-jpeg-功能-不-特征-格式_xbm-不-特征-不-特征-输入对话框-无特征-不-岛-文明日历-不-特征-itemviews无特征-jpeg-功能-功能-不-特征-格式_xbm-不-特征-不-特征-输入对话框-无特征-不-文明日历-无特征-itemviews无特征-功能-不-特征-功能-不-特征-功能--无功能-堆叠小部件-无特征-标准特征-无功能-状态特征-功能-静态-运行时-无功能-运行时-无功能-状态-功能-状态-功能-特性-字符串模型-不-特征-语法高亮-不-功能-系统-功能-图标-不-功能-选项卡-功能-表-表-不-功能-表小部件-没有功能-功能-文本浏览器-文本浏览器-没有-功能-文本解析-文本解析器-不-功能-文本标记阅读器-无功能- -no下写者-license -nomake示例-nomake测试-nomake tools -opensource -platform win32-g++ -prefix“C:\Qt\Static5.15.2”

这个列表附带了我想要使用这个Qt构建的项目。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-30 08:33:47

使用https://github.com/McNopper/EGL中的EGL

下面是我如何从MSYS2构建和安装它,以便它与Qt一起工作:

代码语言:javascript
复制
# change the install path below as needed
INSTALLPREFIX=/D/Prog/build

# fix missing egl.pc
cat > egl.pc << EOF
prefix=$INSTALLPREFIX
libdir=\${prefix}/lib
includedir=\${prefix}/include

Name: egl
Description: EGL implementation supporting OpenGL
Version: $VERSION
Libs: -L\${libdir} -legl
Cflags: -I\${includedir}
EOF
# fix EGL/CMakeLists.txt
patch -ulbf EGL/CMakeLists.txt << EOF
@@ -25,2 +25,5 @@
     \${EGL_SOURCES})
+add_library(egl_shared SHARED
+    \${EGL_SOURCES})
+set_target_properties(egl_shared PROPERTIES OUTPUT_NAME egl)

@@ -28,2 +31,4 @@
     \${CMAKE_CURRENT_LIST_DIR}/include)
+target_include_directories(egl_shared PUBLIC
+    \${CMAKE_CURRENT_LIST_DIR}/include)
 add_definitions(-DEGLAPI=)
EOF
mkdir -p build &&
 cmake.exe -Wno-dev -G"MSYS Makefiles" -DCMAKE_INSTALL_PREFIX:PATH=$INSTALLPREFIX -DCMAKE_BUILD_TYPE:STRING=Release -SEGL -Bbuild &&
 echo "-Wl,--as-needed -lopengl32 -lglew32" >> build/CMakeFiles/egl_shared.dir/linklibs.rsp &&
 make -Cbuild &&
 strip build/*.dll &&
 mkdir -p $INSTALLPREFIX/include $INSTALLPREFIX/lib/pkgconfig $INSTALLPREFIX/bin &&
 cp -rf EGL/include/* $INSTALLPREFIX/include/ &&
 cp -f build/lib*.a $INSTALLPREFIX/lib/ &&
 cp -f build/*.dll $INSTALLPREFIX/bin/ &&
 cp -f egl.pc $INSTALLPREFIX/lib/pkgconfig/ &&
 echo SUCCESS

上面的内容取决于glew,它可以从http://sourceforge.net/projects/glew/files/glew/的源代码中构建,如下所示:

代码语言:javascript
复制
# change the install path below as needed
INSTALLPREFIX=/D/Prog/build

mkdir -p build_win &&
 cmake.exe -Wno-dev -GNinja -DCMAKE_INSTALL_PREFIX:PATH=$INSTALLPREFIX -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_UTILS:BOOL=ON -Sbuild/cmake -Bbuild_win &&
 ninja -Cbuild_win &&
 # manually build libglew32mx
 gcc -DGLEW_MX -O2 -Wall -W -Iinclude -DGLEW_BUILD -o src/glew.mx.o -c src/glew.c &&
 gcc -fno-builtin -fno-stack-protector -shared -s -Wl,-soname,libglew32mx.dll -Wl,--out-implib,lib/libglew32mx.dll.a -o lib/glew32mx.dll src/glew.mx.o -Wl,--as-needed -lglu32 -lopengl32 -lgdi32 -luser32 -lkernel32 -nostdlib &&
 ar cr lib/libglew32mx.a src/glew.mx.o &&
 ninja -Cbuild_win install/strip &&
 # manually install libglew32mx
 cp -f lib/libglew32mx*.a $INSTALLPREFIX/lib/ &&
 cp -f lib/glew32mx.dll $INSTALLPREFIX/bin/ &&
 sed -e "s/-lglew32/-lglew32mx/; s/^Cflags: /&-DGLEW_MX /" $INSTALLPREFIX/lib/pkgconfig/glew.pc > $INSTALLPREFIX/lib/pkgconfig/glewmx.pc &&
 # manually install where needed
 cp -f include/GL/eglew.h $INSTALLPREFIX/include/GL/ &&
 mkdir -p $INSTALLPREFIX/cmake &&
 cp -f build/cmake/*.cmake $INSTALLPREFIX/cmake/ &&
 cp -f build_win/CMakeFiles/Export/lib/cmake/glew/*.cmake $INSTALLPREFIX/cmake/ &&
 sed -i -z -e "s/\(get_filename_component(_IMPORT_PREFIX \"\${_IMPORT_PREFIX}\" PATH)\n\)\{3\}/\1/" $INSTALLPREFIX/cmake/glew-targets.cmake &&
 echo SUCCESS
票数 1
EN

Stack Overflow用户

发布于 2021-08-28 08:13:41

我使用-no-opengl标志解决了这个问题。

下面是我完整的configure列表:

代码语言:javascript
复制
./configure -release -opensource -confirm-license -prefix ".\MinGW" -platform win32-g++ -nomake examples -nomake tests -no-opengl
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68178144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档