1

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

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

[更新] 根据下面评论的建议,qmake 生成的 makefile 直接使用 NMAKE 进行了测试。创建了正确的 qrc_filter_ao.cpp 文件。但是,当我从 Qt Creator 构建时,IDE 仍然无法正确生成此文件。

.pro:

include (../../shared.pri)

TARGET = filter_ao
QT += opengl

HEADERS += ./filter_ao.h
SOURCES += ./filter_ao.cpp

RESOURCES += \
    filter_ao.qrc

共享.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
4

2 回答 2

2

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

RCC_DIR = /TEMP

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

于 2012-09-14T20:30:59.817 回答
1

您是否尝试过使用更简单的 .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
于 2012-09-12T06:00:35.383 回答