在qt开发过程中,出现了如如下错误提示
qt moc: Too many input files specified
查找网上的解决办法,如下这种可以解决:
如下所示:
moc “F:\work\src\test\workthread.h” -o “F:\work\src\test\moc\moc_workthread.cpp”
这种方法需要将moc加入到系统环境变量中。
moc.exe的路径,笔者本机如下图所示:
这种方法有个弊端,就是当项目文件越来越大,每次更改了头文件(.h)都需要使用moc进行手动生成moc文件。
引起这个问题的原因主要还是pro文件内的include参数有问题引起的,笔者遇到的是在引入第三方的boost库头文件时导致的,笔者将boost的头文件定义到系统环境变量中,如下图所示:
然后在QT的pro文件中如下图引入,导致了moc错误,如标题所示的问题。
只需要将boost头文件引入改为如下方式,即解决了moc生成错误的异常。
我们通过对比在pro文件中
和
和
和$,编译的输出信息如下图所示:
通过查阅qt官方文档的描述
可知:“$$”是获取值;“$”值为字符串。
综合原因分析,就是使用$获取字符串,导致了-I路径参数为字符串不是路径导致了moc异常。