+-

我有一个简单的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命令.多年来,这一直是理智的惯例.
>为什么要同时使用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点后,删除库.
>为什么要同时使用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点后,删除库.
点击查看更多相关文章
转载注明原文:c – CMake&QT5 – QT5_WRAP_UI不生成ui头文件 - 乐贴网