当接触.ui文件时,CMake Qt5和AUTOUIC不重建
我有一个Qt5项目,使用CMake和当接触.ui文件时,CMake Qt5和AUTOUIC不重建,qt,cmake,uic,Qt,Cmake,Uic,我有一个Qt5项目,使用CMake和AUTOUIC,AUTOMOC,以及AUTORCC 我的问题是,如果我更改了其中一个.ui文件,我希望UIC运行并生成相应的ui_XXX.h文件。没有。我的add\u库(…Foo1.ui Foo2.ui)声明中列出了.ui文件 这是在Windows和Visual Studio 2019上实现的。我正在使用我的CMake生成的VS解决方案文件。据我所知,AutoUIC运行的唯一时间是它是否正在构建库;触摸任何源文件,所有内容都会按预期生成。只需点击一个.ui文件
AUTOUIC
,AUTOMOC
,以及AUTORCC
我的问题是,如果我更改了其中一个.ui文件,我希望UIC运行并生成相应的ui_XXX.h文件。没有。我的add\u库(…Foo1.ui Foo2.ui)
声明中列出了.ui文件
这是在Windows和Visual Studio 2019上实现的。我正在使用我的CMake生成的VS解决方案文件。据我所知,AutoUIC运行的唯一时间是它是否正在构建库;触摸任何源文件,所有内容都会按预期生成。只需点击一个.ui文件并构建,它就不会构建任何东西
在Linux上构建应用程序的效果与预期一样
我们刚刚将该项目迁移到CMake,用于Windows和Linux之间的通用构建系统,这样的怪癖困扰着团队中的一些人,我们希望解决它们。这是一个已知的CMake,在撰写本文时尚未解决。本期特别提到Visual Studio 2017,但其他Visual Studio生成器也会遇到同样的问题
解决方法之一是使用该命令,而不是依赖于CMAKE\u AUTOUIC
。这样,将为明确列出的每个.ui
文件创建UIC规则:
qt5_wrap_ui(MY_LIB_UI_FILES Foo1.ui Foo2.ui ...)
add_library(MyLib
...
${MY_LIB_UI_FILES}
)
使用为每个
.ui
文件创建UIC规则是否可以解决此问题?你试过这个吗?我在一个小项目上试过qt5_wrap_ui(),这个项目只有几个.ui文件,而且似乎可以通过最少的测试工作。我们有一个包含大约350个.ui文件的大型库,我们希望AUTOUIC的东西能够正常工作,因为没有人想维护包含所有这些.ui文件的CMake文件。我在CMake问题跟踪程序中发现了一个问题(请参见答案),但不幸的是,它尚未得到修复。如果选择使用qt5\u wrap\u ui()
,则可以转到包含.ui
文件的目录,并在Windowscmd
提示符下使用命令dir/b/a-d
列出所有文件名,并将输出复制/粘贴到CMake中。希望这有帮助!