最近做一个 Qt 的项目的代码迁移到新平台,遇到一个问题。这个项目使用的 CMake 构建脚本,项目中的某个ui
文件怎么都不能生成 对应的ui_xxx.h
文件,其他的文件都没有问题,使用qmake
构建也没有问题。
经过排查,问题原因如下:
#include"ui_xxx.h"
上面 #include
和后面的头文件之间没有空格。
CMake 使用下面的函数调用来实现ui
文件的查找。
Uic_.RegExpInclude.compile("(^|\n)[ \t]*#[ \t]*include[ \t]+"
"[\"<](([^ \">]+/)?ui_[^ \">/]+\\.h)[\">]");
也就是#include
和后面的头文件之间必须要一个或多个空格或者Tab符,否则就匹配不上。
参考资料
下面的链接中是一些相关的资料,包括其他原因导致的不生成ui_xxx.h
头文件的情况。
- CMake Qt5 can't generate header file for ui file AUTOUIC
- https://forum.qt.io/topic/143180/cannot-find-generated-ui-header-files-with-cmake-and-autouic
- [CMake] set(CMAKE_AUTOUIC ON) question:Don't process ui file
- cmake-qt AUTOMOC
- 解决qt中cmake单独存放 .ui, .cpp, .h文件
- CMake不生成QT的UI头文件