• Qt moc: Too many input files specified


    1.现象描述

    qt开发过程中,出现了如如下错误提示

    qt moc: Too many input files specified

    2.解决办法

    查找网上的解决办法,如下这种可以解决:

    1.使用moc将h文件手动生成moc文件:

    如下所示:

    moc “F:\work\src\test\workthread.h” -o “F:\work\src\test\moc\moc_workthread.cpp”

    这种方法需要将moc加入到系统环境变量中。
    moc.exe的路径,笔者本机如下图所示:
    在这里插入图片描述
    这种方法有个弊端,就是当项目文件越来越大,每次更改了头文件(.h)都需要使用moc进行手动生成moc文件。

    2.彻底解决方法

    引起这个问题的原因主要还是pro文件内的include参数有问题引起的,笔者遇到的是在引入第三方的boost库头文件时导致的,笔者将boost的头文件定义到系统环境变量中,如下图所示:

    在这里插入图片描述
    然后在QT的pro文件中如下图引入,导致了moc错误,如标题所示的问题。
    在这里插入图片描述
    只需要将boost头文件引入改为如下方式,即解决了moc生成错误的异常。
    在这里插入图片描述

    3.原因分析:

    我们通过对比在pro文件中 和 和 $,编译的输出信息如下图所示:
    在这里插入图片描述

    通过查阅qt官方文档的描述
    在这里插入图片描述
    可知:“$$”是获取值;“$”值为字符串。
    综合原因分析,就是使用$获取字符串,导致了-I路径参数为字符串不是路径导致了moc异常。

    • 感谢打赏 微信二维码
    • 微信
  • 相关阅读:
    共识算法涉及的概念
    MySQL安装
    09.Tornado_获取请求参数
    现代C++(Modern C++)基本用法实践:五、智能指针
    win10 smb共享硬盘
    【力扣每日一题】2023.9.18 打家劫舍Ⅲ
    Git技法:.gitignore、移除暂存与撤销修改
    Gemma
    【Linux】系统安全及应用
    初识 Linux 文件系统
  • 原文地址:https://blog.csdn.net/zhuyunfei/article/details/126901648