Qt5和CMAKE_AUTORCC

Mue*_*ito 1 c++ qt cmake

我正在尝试使用Qt移植现有项目以使用cmake。该项目有(几个)ui和(一个)qrc文件。在CMakeLists.txt中,如果我使用:

set(CMAKE_AUTOUIC ON)
Run Code Online (Sandbox Code Playgroud)

并生成一个Visual Studio(2015)项目,它具有一个预构建步骤,即从ui文件生成源,并将这些生成的文件添加到VS项目中。但是,如果我将qrc文件包括在项目源中,然后进行设置:

set(CMAKE_AUTORCC ON)
Run Code Online (Sandbox Code Playgroud)

生成的项目不再具有预构建步骤。它确实包含相应的qrc.cpp文件。但是,在项目构建时,它失败是因为该文件不存在,也不会生成。我也尝试设置CMAKE_AUTORCCOFF,并使用QT5_ADD_RESOURCES。这不会删除ui预构建步骤,但是不会将添加qrc.cpp到项目中。

我正在使用Qt 5.6.0和cmake 3.5.2。

Nam*_*kes 5

我知道已经快四个月了,但是我刚才遇到了同样的问题,并仔细阅读了您的问题。浏览了icon / qrc资源系统上的Qt文档后,我有了一个可行的解决方案。我将所有3个设置都放在同一个CMakeLists.txt文件中-以前有前两个设置:

set (CMAKE_AUTOMOC ON)
set (CMAKE_AUTOUIC ON)
set (CMAKE_AUTORCC ON)
Run Code Online (Sandbox Code Playgroud)

然后,当您添加exe / dll时,请执行以下操作:

addlibrary (${myDLL} SHARED ${mySRC_LIST} ${myQRC_LIST})
Run Code Online (Sandbox Code Playgroud)

您猜对了,新文件${myQRC_LIST}列表包含.qrc文件列表。瞧!我的第一次尝试就得到了这个结果,这是非常罕见的!

文件菜单和工具栏

当然,我也可以将.qrc文件合并到一起${mySRC_LIST},但是我希望保持列表的一致性。无论您做什么,都请通读Qt Resource Doc,以便正确包含图标。希望这可以帮助。