Qt使用CMake:ui_mainwindow.h:没有这样的文件或目录

Dan*_*ett 4 qt qt-creator moc

我将Qt与CMake一起使用,因为CMake比我自己的团队工作更容易.我经常遇到一个错误

ui_*.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)

通常,当我的项目已经有一个ui_*.h文件开始时,它只会修改该.h文件.我在我的CMake文件中使用下面的命令,所以它应该.ui用适当的ui_*.h文件包装我的文件.

qt4_wrap_ui (mainwindow  mainwindow.ui)
target_linked_library (mainwindow ${QT_LIBRARIES})
Run Code Online (Sandbox Code Playgroud)

但有时这不起作用,我必须完全重建整个ui_*.h文件.我究竟做错了什么?

小智 11

对于任何在将来遇到此问题的人.我几乎跟着这里的演示.

http://doc.qt.io/qt-5/cmake-manual.html

添加,以下行到CMakeLists.txt应该摆脱这个问题.

set(CMAKE_AUTOUIC ON)
Run Code Online (Sandbox Code Playgroud)

来自CMake文档

https://cmake.org/cmake/help/v3.0/prop_tgt/AUTOUIC.html

AUTOUIC是一个布尔值,指定CMake是否自动处理Qt uic代码生成器,即无需使用QT4_WRAP_UI()或QT5_WRAP_UI()宏.目前支持Qt4和Qt5.

一个小注意,这个属性在CMake版本3.0.2+中可用.所以在下面,@ rbaleksandar的解决方案应该更合适.

希望有所帮助.

  • 仅当项目将“*.ui”文件存储在与 C++ 源文件相同的文件夹中时,将“CMAKE_AUTOUIC”设置为“ON”才有效。否则,项目将无法包含“ui_*.h”文件。 (2认同)