C++ Qt5和CMAKE_自动抄送
我正在尝试使用Qt移植现有项目以使用cmake。该项目有(几个)C++ Qt5和CMAKE_自动抄送,c++,qt,cmake,C++,Qt,Cmake,我正在尝试使用Qt移植现有项目以使用cmake。该项目有(几个)ui和(一个)qrc文件。在CMakeLists.txt中,如果我使用: set(CMAKE_AUTOUIC ON) 并生成一个Visual Studio(2015)项目,它有一个预构建步骤,从ui文件生成源代码,并将这些生成的文件添加到VS项目中。但是,如果我在项目源中包括qrc文件,然后设置: set(CMAKE_AUTORCC ON) 生成的项目不再具有预构建步骤。它确实包含相应的qrc.cpp文件。但是,当项目生成时,它
ui
和(一个)qrc
文件。在CMakeLists.txt中,如果我使用:
set(CMAKE_AUTOUIC ON)
并生成一个Visual Studio(2015)项目,它有一个预构建步骤,从ui
文件生成源代码,并将这些生成的文件添加到VS项目中。但是,如果我在项目源中包括qrc
文件,然后设置:
set(CMAKE_AUTORCC ON)
生成的项目不再具有预构建步骤。它确实包含相应的qrc.cpp
文件。但是,当项目生成时,它会失败,因为文件不存在,并且无法生成。我还尝试将CMAKE\u AUTORCC
设置为OFF
,并使用QT5\u ADD\u RESOURCES
。这不会删除ui
prebuild步骤,但不会将qrc.cpp
添加到项目中
我正在使用Qt 5.6.0和cmake 3.5.2。我意识到已经快4个月了,但我刚才遇到了同样的问题,并仔细阅读了你的问题。在浏览了icons/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}
中,但我喜欢保持列表的同质性。无论你做什么,请通读一遍,以便正确地包含图标。希望这有帮助。从您的描述中不清楚哪个构建步骤没有被执行:uic还是rcc。为了得到有意义的答案,请提供一个。rcc从不执行,使用我描述的任何一种方法。如果我使用CMAKE\u AUTORCC OFF
,则将执行uic。如果我在上使用了CMAKE\u AUTORCC,那么uic将不会执行。您是否设置了“set(CMAKE\u INCLUDE\u CURRENT\u DIR ON)”?您的文件应在当前目录中生成