CMake & QT5 & Conan // CMAKE_AUTOUIC не генерирует заголовочные файлы пользовательского интерфейса - PullRequest
0 голосов
/ 24 сентября 2018

Я пробовал решение, данное в этой теме: CMake & QT5 - QT5_WRAP_UI не генерирует файлы заголовков пользовательского интерфейса , но ничего не меняется.

Вот мой первый 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

Есть идеи?Я пытался поместить набор (CMAKE_AUTOUIC ON) в разные места в моем CMaleLists.txt, но похоже, что ничего не меняется (в папках проекта НЕТ ui_mainwindow.h)

PS: я используюмногоплатформенный бинарный менеджер CONAN для получения Qt (однако использование Qt без файлов .ui прекрасно работает)

Большое спасибо!хорошего дня

1 Ответ

0 голосов
/ 26 декабря 2018

Как показано в документации http://doc.qt.io/qt-5/cmake-manual.html,, вы должны добавить файл mainwindow.ui в babel_client_SRCS, чтобы он затем был передан в add_executable

...