CMake & QT5 - QT5_WRAP_UI不生成 UI 头文件
CMake & QT5 - QT5_WRAP_UI not generating ui header files
我有一个简单的CMakeLists.txt,看起来像这样:
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT(calculator)
FIND_PACKAGE(Qt5Core)
FIND_PACKAGE(Qt5Gui)
FIND_PACKAGE(Qt5Widgets)
SET(CMAKE_AUTOMOC ON)
SET(CMAKE_INCLUDE_CURRENT_DIR ON)
SET(calculator_SOURCES main.cpp mainwindow.cpp)
SET(calculator_HEADERS mainwindow.h)
SET(calculator_FORMS mainwindow.ui)
QT5_WRAP_CPP(calculator_HEADERS_MOC ${calculator_HEADERS})
QT5_WRAP_UI(calculator_FORMS_HEADERS ${calculator_FORMS})
ADD_LIBRARY(calculator_CONFIG ${calculator_HEADERS_MOC} ${calculator_FORMS_HEADERS})
QT5_USE_MODULES(calculator_CONFIG Widgets)
ADD_EXECUTABLE(calculator ${calculator_SOURCES} ${calculator_CONFIG})
QT5_USE_MODULES(calculator Core Gui Widgets)
当我尝试使用cmake -G "Unix Makefiles"
和随后的make
构建项目时,控制台会说找不到ui_mainwindow.h
。问题出在哪里?这是我的cmake文件吗?
完整错误输出:
[ 22%] Building CXX object CMakeFiles/calculator.dir/mainwindow.cpp.o
/home/centurion/Code/cpp/calculator/mainwindow.cpp:2:27: fatal error: ui_mainwindow.h: No such file or directory
#include "ui_mainwindow.h"
^
compilation terminated.
make[2]: *** [CMakeFiles/calculator.dir/mainwindow.cpp.o] Error 1
make[1]: *** [CMakeFiles/calculator.dir/all] Error 2
make: *** [all] Error 2
我在运行cmake 3.2.2时遇到了相同的问题。尝试使用
SET(CMAKE_AUTOUIC ON)
如果没有生成ui文件。也许默认行为最近发生了变化?
-
使用小写CMake命令。这是多年来理智的惯例。
-
为什么同时使用
AUTOMOC
和qt5_wrap_cpp
?AUTOMOC
被设计用来代替宏。http://www.cmake.org/cmake/help/v3.0/manual/cmake-qt.7.html#automoc -
如果使用CMake 2.8.11或更高版本,则不要使用
qt5_use_modules
。在CMake 2.8.11发布之前,我曾写过这篇文章作为权宜之计。target_link_libraries
命令的作用与qt5_use_modules
的作用相同,但更好,更通用。http://doc-snapshot.qt-project.org/qt5-5.3/cmake-manual.html -
这个图书馆没有自己的资料来源,也没有人使用。你显然"做错了"。将
${calculator_FORMS_HEADERS}
变量的用法移动到可执行文件源。然后在寻址点2之后,删除库。
我在Mac OS X上遇到了同样的问题。没有生成Ui表单头文件。
我已经通过使用QtDesigner手动生成.h文件解决了我的问题。当对ui表单进行更改时,头文件会很好地生成。
注意:如果我添加一些其他ui表单,则会自动生成头文件,而无需为这些其他ui手动生成头文件。
EDIT:只有在cpp代码中没有使用头文件的情况下,头文件才会在第一次构建时生成。
- 如何在MS Visual Studio 2019中运行QT UI
- Qt5:使用QCommandLineParser类时出现奇怪的编译错误
- 如何处理使用.ui文件生成的.h文件
- 根据变量使Qt UI中的复选框为已选中/未选中
- phytec phyBOARD iMX-6在从闪存而不是SD卡运行qt5 opengles应用程序时表现不佳(FPS减半
- 更改命令行 qt5 源代码构建配置的正确/快速方法
- 控制台输出在 Qt5 中未正确显示
- 一旦双簧管录制开始,主 UI 线程就会被阻止
- 在Qt5中使用QTextSteam时的"使用已删除功能"
- Qt Quick,如何更改 Ui 源代码?
- Qt5 从 MySQL 数据库中选择数据
- Qt5 远程对象 + 自定义类型,但不在 POD 中
- Qt5 用户界面编译器:-i 选项不可用
- Qt5 ui,多个窗口:如何从窗口 1 访问窗口 2 中的 UI 对象
- 来自 UI 的 Qt5 小部件属性
- 将 .ui 文件导入 Qt5 C++时出错"was not declared in this scope"
- Qt5 从另一个类访问 UI
- Qt5 Designer Ui文件中的QSystemTrayIcon
- CMake & QT5 - QT5_WRAP_UI不生成 UI 头文件
- Qt5到Qt4 UI文件兼容性