我已经试着构建Qt 5.15.2好几天了。我修复了几个问题,但我找不到关于最后一个错误(或过时(的太多信息。
配置成功,但使用mingw32 make命令生成失败,并出现以下错误:
qwindowseglcontext.h:45:10:致命错误:EGL/EGL.h:没有这样的文件或目录
我知道它缺少一个标头,但我找不到关于如何更正此问题的可行解释。经过一番研究,我发现https://cn.khronos.org/egl/但是下载链接已经死了,我也看到一些人说使用OpenGL ES AMD SDK是可能的,但我不知道它到底是什么。
如果有人能帮我澄清这件事,我将不胜感激。感谢
以下是我在编译前用于配置Qt的参数列表:
/config.bat-跳过qtimageformats-跳过qtwinextras-无功能操作-无功能动画-无模型-big_decs-无功能按钮组-无功能日历小部件-无功能编解码器-无功能颜色对话框-无功能列视图-无功能组合框-无功能命令链接按钮-无功能完成器-无功能连接表proxymode-无功能上下文菜单-无功能杯-没有功能cupsjobwidget-没有功能日期时间编辑-没有功能dbus-没有功能调试-没有feature-debug_and_release-没有功能开发人员构建-没有功能拨号-没有功能目录模型-没有功能dockwidget-没有功能拖放-没有功能简化曲线-没有功能效果-没有功能错误消息-没有功能文件对话框-功能文件系统模型-功能文件监视程序-没有功能字体组合框-无功能fontdialog-无功能-force_debug_info-无功能fscompleter-无功能手势-无功能图形效果-无功能图表视图-无功能分组框-无功能hijricalendar-无功能iconv-无功能icu-无功能identityproxyodel-无功能im-无功能-im-no-feature-imageformat_ppm-no-feature-imageformat_xbm-无功能inotify-无功能输入对话框-无功能islamiccivilcalendar-无功能项目视图-无功能jalalicalendar-没有功能键序列编辑-无功能lcdnumber-没有功能行编辑-没有功能列表视图-没有功能清单小部件-没有功能主窗口-没有功能mdiarea-没有特征菜单-没有功能菜单栏-没有功能mimetype-无功能mimetype数据库-无功能电影-无功能优化调试-功能优化大小-无功能pdf-无功能打印对话框-无功能打印机-无功能预览对话框-无特征打印小部件-无功能进度条-无特征进度对话框-无功能代理模型-无功能单选按钮-无功能-无模型-64位-无模型释放工具-无功能调整处理程序-无功能橡皮筋-无功能滚动区-无功能滚条-无功能卷动器-无功能-分区_debug_info-无功能共享-无功能sizegrip-无功能滑块-无功能sortfilterproxymode-无功能spinbox-无功能splashscreen-无功能拆分器-无功能堆叠dwidget-无功能标准化模型-无功能状态机-功能静态-功能静态_运行时间-无功能状态bar-无功能状态stip-无功能字符串模型-无功能语法高亮显示-无功能系统trayicon-无功能选项卡-无功能桌面事件-无功能表视图-无功能表格小工具-无功能标签小工具-无功能文本浏览器-无功能文本编辑-无功能texthtmlparser-无功能text标记下读器-无功能文字标记下写器-无功能时区-无功能工具栏-无功能工具箱-无功能工具按钮-无功能提示-无功能顶层域-无功能转换-无功能转置代理模型-无功能树视图-无功能树状窗口小部件-无功能撤销命令-无功能撤销组-无功能撤消堆栈-无功能取消查看-无功能验证器-无功能whatsthis-无功能轮子事件-没有功能widgettextcontrol-没有功能向导-确认许可证-nomake示例-nomake测试-nomaketools-开源-平台win32-g++-前缀"C: \Qt\Static\5.15.2";
此列表附带了我想要使用此Qt构建的项目。
使用EGLhttps://github.com/McNopper/EGL
以下是我如何从MSYS2构建和安装它,使其与Qt:一起工作
# 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/像这样:
# 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
我使用-no-opengl
标志解决了这个问题。
这是我完整的configure
列表:
./configure -release -opensource -confirm-license -prefix ".MinGW" -platform win32-g++ -nomake examples -nomake tests -no-opengl