Qt笔记:qt5.15.2自行编译qtscript
1. 问题描述
qt5.15.2中,qtscript已被弃用,官方提供的版本没有编译,但源码还是提供了。到qt6时应该就完全不用了吧,说明如下:
历史与现状
- Qt 4 时代的主流方案 QtScript 在 Qt 4 中首次引入,作为官方推荐的脚本解决方案。 依赖 QScriptEngine、QScriptSyntaxChecker 等类,提供完整的调试支持(如
QScriptEngineDebugger)。- Qt 5 及以后的废弃 自 Qt 5.0 起,QtScript 被标记为 废弃(deprecated),官方推荐迁移至以下替代方案: QJSEngine(Qt 5.5+ 引入) 更轻量级的 JavaScript 引擎,基于 ECMAScript 5.1。
适合简单脚本需求,但功能少于 QtScript。 Qt WebEngine(Qt 5.4+ 引入) 集成 Chromium 的 V8
引擎,支持现代 JavaScript(ES6+)和 Web API。 适合需要完整浏览器环境的场景(如混合应用)。- Qt 6 中的移除, 在 Qt 6 中,QtScript 模块被完全移除,仅保留 QJSEngine 作为基础脚本支持。
用vs2019(已安装qt vs扩展,)直接打开qt源码目录下的qtscript.pro

,Qt5Script顺利通过,但编译Qt5ScriptTools报编译错误,
fatal error C1083: Cannot open include file: ‘qscriptenginedebugger.moc’: No such file or directory
fatal error C1083: Cannot open include file: ‘qscriptdebuggerlocalswidget.moc’: No such file or directory
fatal error C1083: Cannot open include file: ‘qscriptdebuggerconsolewidget.moc’: No such file or directory

2.原因分析及解决方案
以上所报的几个moc文件没有生成,qscriptenginedebugger.moc,qscriptdebuggerlocalswidget.moc,qscriptdebuggerconsolewidget.moc。
右键qscriptenginedebugger.cpp文件,属性查看,发现输出的moc文件名不正确,改为%(Filename).moc即可,其他几个也是类似改。我想应该是qt vs插件的bug吧,我用的qt vs插件版本是3.4.1。

改为

3. 编译成功


