0

我试过这个线程中给出的解决方案:CMake & QT5 - QT5_WRAP_UI not generate ui header files but nothing changes。

这是我的第一个 CMakeLists.txt (在项目的根目录,它调用了第二个)

    cmake_minimum_required (VERSION 3.11.2)
    project(babel)
    include(${CMAKE_SOURCE_DIR}/build/conanbuildinfo.cmake)
    conan_basic_setup()
    subdirs(client)

第二个是:

    include_directories(${babel_SOURCE_DIR}/client/inc)
    include_directories(${babel_SOURCE_DIR}/common)

    set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR})
    set(babel_client_SRCS
    main.cpp
    mainwindow.cpp
    )

    set(CMAKE_CXX_FLAGS "-Wall -fPIC -std=c++11")
    set(CMAKE_AUTOUIC ON)
    set(AUTOGEN_BUILD_DIR ${CMAKE_SOURCE_DIR/client/inc})

    add_executable(babel_client ${babel_client_SRCS})
    target_link_libraries(babel_client ${CONAN_LIBS})

我的 main.cpp 得到了#include "ui_mainwindow.h" ,这是错误输出:

[ 33%] Building CXX object client/src/CMakeFiles/babel_client.dir/main.cpp.o
/plopPath/client/src/main.cpp:1:10: fatal error: ui_mainwindow.h: No such file or directory
 #include "ui_mainwindow.h"
      ^~~~~~~~~~~~~~~~~
compilation terminated.
gmake[2]: *** [client/src/CMakeFiles/babel_client.dir/build.make:63: client/src/CMakeFiles/babel_client.dir/main.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:104: client/src/CMakeFiles/babel_client.dir/all] Error 2
gmake: *** [Makefile:84: all] Error 2

有任何想法吗?我尝试将 set(CMAKE_AUTOUIC ON) 放在我的 CMaleLists.txt 的不同位置,但看起来没有任何变化(项目文件夹中没有创建 ui_mainwindow.h)

PS:我正在使用多平台二进制管理器 CONAN 来获取 Qt(但是使用没有 .ui 文件的 Qt 可以正常工作)

4

1 回答 1

0

如文档http://doc.qt.io/qt-5/cmake-manual.html中所示,您必须将mainwindow.ui文件添加到babel_client_SRCS,然后将其传递给add_executable

于 2018-12-26T09:23:55.840 回答