我在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;
}