VS2010编译Qt项目找不到ui_xxx.h文件的总结

使用VS2010编译Qt4项目,编译提示找不到ui_xxxxx.h,显然是xxxxx. ui文件没能正常编译。
网上说需要转换一下工程类型,转换为Qt工程:
VS2010编译Qt项目找不到ui_xxx.h文件的总结_第1张图片
但是我试过了不行,只得在文件的属性里面增加自定义生成工具,右键xxxxx. ui文件:
VS2010编译Qt项目找不到ui_xxx.h文件的总结_第2张图片
然后在自定义生成工具中添加Qt的编译命令:
详细生成命令
命令行:

"D:\Qt\4.8.5\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"

输出:

.\GeneratedFiles\ui_%(Filename).h;%(Outputs)

附加依赖项:

D:\Qt\4.8.5\bin\uic.exe;%(AdditionalInputs)

这是ui文件的自定义生成命令,如果是Qt类的.h文件:
详细生成命令
命令行:

"D:\Qt\4.8.5\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DUNICODE -DWIN32 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB "-I.\GeneratedFiles" "-I." "-ID:\Qt\4.8.5\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-ID:\Qt\4.8.5\include\QtCore" "-ID:\Qt\4.8.5\include\QtGui" "-ID:\Qt\4.8.5\include\QtWidgets"

输出:

.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp

附加依赖项:

D:\Qt\4.8.5\bin\moc.exe;%(FullPath)

其实这些自定义命令应该是Qt插件为我们生成好的,不知什么原因没有生成,只能自己动手丰衣足食。
上述更改是解决了问题,但是写法不完善,引用的Qt库都是使用的绝对路径:
VS2010编译Qt项目找不到ui_xxx.h文件的总结_第3张图片
假如我们版本升级了,或是换了台电脑,Qt的路径或版本变化了:
VS2010编译Qt项目找不到ui_xxx.h文件的总结_第4张图片
像上图,版本变为4.8.6了,再编译刚才的项目又报错了:
编译错误
错误详情:
编译错误详情
总不能换个版本改一次吧。其实安装Qt是有环境变量的,如果没有的话就自己添加一个:
VS2010编译Qt项目找不到ui_xxx.h文件的总结_第5张图片
然后把刚才填写的自定义命令用环境变量替换,在VS2010中引用环境变量要使用“$(QTDIR)”格式:
VS2010编译Qt项目找不到ui_xxx.h文件的总结_第6张图片
这里注意的是,VS打开Qt工程,一般会生成一个记录Qt版本的文件,名为xxx.vcxproj.user,打开其内容如下:
VS2010编译Qt项目找不到ui_xxx.h文件的总结_第7张图片
这里面记录的QTDIR版本还是4.8.5,而VS会优先使用这个环境变量,所以我们那样写后可能发现还是4.8.5版本,需要手动把这个文件的QTDIR改为4.8.6,之后再编译就没有问题了。
但是为每个Qt项目都得写一遍带环境变量的库引用也还是挺麻烦的,我们能不能设置一个通用的属性,以后每个项目都可以使用这个配置呢?答案就在“视图->其他窗口->属性管理器”中:
VS2010编译Qt项目找不到ui_xxx.h文件的总结_第8张图片
在属性管理器中添加一个为Qt项目设置的通用配置:
VS2010编译Qt项目找不到ui_xxx.h文件的总结_第9张图片
这样以后的项目都可以添加这个属性配置,从而免去每次都配置一遍Qt的相关属性。

你可能感兴趣的:(基础知识,VC)