【问题标题】:Qt5 and CMAKE_AUTORCCQt5 和 CMAKE_AUTORCC
【发布时间】:2016-08-11 13:17:34
【问题描述】:

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

set(CMAKE_AUTOUIC ON)

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

set(CMAKE_AUTORCC ON)

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

我正在使用 Qt 5.6.0 和 cmake 3.5.2。

【问题讨论】:

  • 从您的描述中不清楚哪个构建步骤没有被执行:uic 或 rcc。请提供MCVE 以获得有意义的答案。
  • rcc 永远不会执行,使用我描述的任何一种方法。如果我使用CMAKE_AUTORCC OFF,则 uic 将执行。如果我使用CMAKE_AUTORCC ON,那么uic就不会执行。
  • 你设置“set(CMAKE_INCLUDE_CURRENT_DIR ON)”了吗?您的文件应该在当前目录中生成

标签: c++ qt cmake


【解决方案1】:

我意识到已经快 4 个月了,但我刚才遇到了同样的问题,并阅读了您的问题。在浏览了图标/qrc 资源系统上的 Qt 文档后,我有了一个可行的解决方案。我在同一个 CMakeLists.txt 文件中拥有所有 3 个设置 - 之前有前两个:

set (CMAKE_AUTOMOC ON)
set (CMAKE_AUTOUIC ON)
set (CMAKE_AUTORCC ON)

然后当你添加你的 exe/dll 时,这样做:

addlibrary (${myDLL} SHARED ${mySRC_LIST} ${myQRC_LIST})

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

当然,我也可以将我的 .qrc 文件合并到 ${mySRC_LIST} 中,但我喜欢保持我的列表同质化。无论您做什么,请通读Qt Resource Doc,以便正确包含图标。希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多