首页 文章

qmake不生成二进制资源文件

提问于
浏览
1

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

根据Qt documentation我的理解是,在Qt的.pro文件中包含一个资源(.qrc),只需要qmake生成正确的qrc _ * .cpp文件 . 那不是在compiler_rcc_clean下寻找,而不是在构建链中 .

[更新]根据以下评论的建议,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

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)

general.pri

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

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_文件 .

  • 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
    

相关问题