qmake未生成二进制资源文件



规格:Qt Creator 2.5.1、Qt 4.7.4(32位)

我从Qt文档中了解到,在Qt的.pro文件中包含一个资源(.qrc)是获取qmake以生成正确的qrc_*.cpp文件所需的全部内容。我的项目似乎并非如此。当运行qmake时,会创建make文件,并且在compiler_rcc_clean下有对我要查找的qrc_文件的引用,只是不在构建链中。

[更新]根据下面评论的建议,qmake生成的makefile直接与NMAKE一起测试。已创建正确的qrc_filter_ao.cpp文件。然而,当我从QtCreator构建时,IDE仍然无法正确生成此文件。

.pro:

include (../../shared.pri)
TARGET = filter_ao
QT += opengl
HEADERS += ./filter_ao.h
SOURCES += ./filter_ao.cpp
RESOURCES += 
    filter_ao.qrc

shared.pri

include (./general.pri)
VCGDIR = ../$$VCGDIR
TEMPLATE      = lib
CONFIG       += plugin
CONFIG       += resources
QT += opengl
QT += xml
QT += xmlpatterns
QT += script
win32-msvc2008:  LIBS += ../../distrib/common.lib
win32-msvc2008:DEFINES += GLEW_STATIC _USE_MATH_DEFINES
INCLUDEPATH  *= ../.. $$VCGDIR ../$$GLEWDIR/include
DEPENDPATH += ../.. $$VCGDIR
win32-msvc2008:DEFINES  += _CRT_SECURE_NO_DEPRECATE
CONFIG(release,debug | release){
  # Uncomment the following line to disable assert in mingw
  #DEFINES += NDEBUG
}
DESTDIR       = ../../distrib/plugins
contains(TEMPLATE,lib) {
  CONFIG(debug, debug|release) {
     unix:TARGET = $$member(TARGET, 0)_debug
     else:TARGET = $$member(TARGET, 0)d
  }
}
win32-msvc2008: RCC_DIR = $(ConfigurationName)

一般.pri

 VCGDIR = ../../../vcglib
 GLEWDIR = ../external/glew-1.7.0
 win32:DEFINES += NOMINMAX

我认为@Pie_Jesu是正确的。我用OP中的文件建立了一个目录结构,并将.pro文件导入到QtCreator中。我已经从设置RCC_DIR的行中删除了"win32-msvc2008:"前缀,因为我使用的是VS Express 2010。结果是,我收到一条类似"无法打开\qrc_filter_ao.cpp进行写入:访问被拒绝"的消息,并且没有创建qrc_file。然后我将行设置为/TEMP:

RCC_DIR = /TEMP

结果是,我在\TEMP下面找到了qrc_文件。

您尝试过使用更简单的.pro文件吗?例如,以下对我有效(在Linux上,目前没有可用的MSVC环境):

TEMPLATE = lib
CONFIG       += plugin
CONFIG       += resources
QT += opengl
QT += xml
QT += xmlpatterns
QT += script
TARGET = filter_ao
QT += opengl
RESOURCES += 
    filter_ao.qrc

确保构建的输出包含对$QTDIR/rcc的调用,如

/usr/bin/rcc -name filter_ao filter_ao.qrc -o qrc_filter_ao.cpp

最新更新