代码之家  ›  专栏  ›  技术社区  ›  Evan Teran

如何防止Qt/cmake在windows上向资源添加回车符

  •  1
  • Evan Teran  · 技术社区  · 7 年前

    我在windows上运行时遇到了麻烦。。。

    资源已经有了自己的优势 "\n" 行尾全部转换为 "\r\n" 在这条线上的某个地方!我真的希望不必改变解析器来选择性地接受多种类型的换行符。

    有没有一种方法可以告诉cmake通过传递一个标志或类似的东西来告诉Qt资源编译器不要进行转换?

    编辑: 为了澄清发生了什么,我将解释所有的小细节,为什么我认为qrc是添加新线。。。

    首先,我有一个.qrc文件,大致如下所示:

    <RCC>
        <qresource prefix="/">
            <file>res/DefaultSettings.txt</file>
        </qresource>
    </RCC>
    

    它通过cmake添加到可执行文件中,代码如下:

    qt5_add_resources(QRC_SOURCES
        resource.qrc
    )
    

    add_executable(my_project
        resource.qrc
        main.cpp
    )
    

    最后,加载的代码如下:

    QByteArray loadResource(const QString &resource) {
    
        QResource res(resource);
        if(!res.isValid()) {
            qFatal("Failed to load internal resource");
        }
    
        // don't copy the data, if it's uncompressed, we can deal with it in place
        auto defaults = QByteArray::fromRawData(reinterpret_cast<const char *>(res.data()), res.size());
    
        if(res.isCompressed()) {
            defaults = qUncompress(defaults);
        }
    
        // NOTE: at this point, using a debugger, I observe 
        // "\r\n" newlines in the defaults byte array 
        return defaults;
    }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Kuba hasn't forgotten Monica    7 年前

    推荐文章