我有一个Qt 5项目,使用带有AUTOUIC
、AUTOMOC
和AUTORCC
的CMake。
我的问题是,如果我更改了其中一个.ui文件,我希望UIC运行并生成相应的ui_XXX. h文件,但实际上并没有。我在add_library(... Foo1.ui Foo2.ui)
声明中列出了.ui文件。
这是在Windows和Visual Studio 2019上。我正在使用我的CMake产生的VS解决方案文件。据我所知,Auto UIC唯一运行的时间是在它构建库的时候;触摸任何源文件,所有内容都会按预期构建。只触摸一个.ui文件并进行构建,它不会构建任何内容。
在Linux上构建应用程序可以按预期工作。
我们刚刚将项目迁移到了CMake,以实现Windows和Linux之间的通用构建系统,像这样的怪癖让团队中的一些人感到烦恼,我们希望解决这些问题。
1条答案
按热度按时间ncgqoxb01#
这是一个已知的CMake issue,并已由this merge request (5999)修复。该问题特别提到了Visual Studio 2017,但其他Visual Studio生成器也会出现同样的问题。
如果您无法更新到修复此问题的版本,一种解决方法是使用
qt5_wrap_ui()
命令,而不是依赖CMAKE_AUTOUIC
。这样,将为明确列出的每个.ui
文件创建一个UIC规则: