CMake Qt5 и AUTOUI C не перестраиваются при касании файла .ui - PullRequest
1 голос
/ 19 февраля 2020

У меня есть проект Qt5, использующий CMake с AUTOUIC, AUTOMOC и AUTORCC.

Моя проблема в том, что если я изменю один из файлов .ui, я ожидаю UI C запустить и создать соответствующий файл ui_XXX.h. Это не так. У меня есть файлы .ui, перечисленные в моей декларации add_library(... Foo1.ui Foo2.ui).

Это на Windows с Visual Studio 2019. Я использую файл решения VS, созданный моим CMake. Насколько я могу судить, Auto UI C работает только тогда, когда он собирает библиотеку; прикоснитесь к любому исходному файлу, и все будет построено как положено. Коснитесь только файла .ui и соберите, и он ничего не соберет.

Сборка приложения на Linux работает как положено.

Мы просто перенесли проект в CMake для общего построить систему между Windows и Linux, и подобные странности раздражают некоторых людей в команде, и мы хотели бы их разрешить.

1 Ответ

1 голос
/ 19 февраля 2020

Это известная проблема CMake , которая еще не была решена на момент написания. В этой проблеме конкретно упоминается Visual Studio 2017, но проблема будет такой же для других генераторов Visual Studio.

Один из способов - использовать команду qt5_wrap_ui() вместо того, чтобы полагаться на CMAKE_AUTOUIC. Таким образом, правило UI C создается для каждого явно перечисленного .ui файла:

qt5_wrap_ui(MY_LIB_UI_FILES Foo1.ui Foo2.ui ...)
add_library(MyLib 
    ... 
    ${MY_LIB_UI_FILES}
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...