2

我有一个 Qt5 项目,使用带有AUTOUICAUTOMOCAUTORCC.

我的问题是,如果我更改其中一个 .ui 文件,我希望 UIC 能够运行并生成相应的 ui_XXX.h 文件。它没有。我的add_library(... Foo1.ui Foo2.ui)声明中列出了 .ui 文件。

这是在带有 Visual Studio 2019 的 Windows 上。我正在使用 VS 解决方案文件生成我的 CMake。据我所知,Auto UIC 运行的唯一时间是它是否正在构建库。触摸任何源文件,一切都按预期构建。只需触摸一个 .ui 文件并构建,它不会构建任何东西。

在 Linux 上构建应用程序按预期工作。

我们刚刚将项目迁移到 CMake,以便在 Windows 和 Linux 之间建立一个通用的构建系统,这样的怪癖让团队中的一些人感到恼火,我们希望解决它们。

4

1 回答 1

1

这是一个已知的 CMake问题,在撰写本文时尚未解决。该问题特别提到了 Visual Studio 2017,但其他 Visual Studio 生成器的问题将是相同的。

一种解决方法是使用qt5_wrap_ui()命令而不是依赖CMAKE_AUTOUIC. 这样,就会为每个.ui明确列出的文件创建一个 UIC 规则:

qt5_wrap_ui(MY_LIB_UI_FILES Foo1.ui Foo2.ui ...)
add_library(MyLib 
    ... 
    ${MY_LIB_UI_FILES}
)
于 2020-02-19T17:12:24.483 回答