近日将整个项目的源码格式从GB2312转成了UTF8(无BOM)的格式,在QtCreator中编译时出现了著名的C4819警告:该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失。
虽然程序不影响,但大片的warning夹杂在其他有用的编译消息中却非常碍事,故决定搜索解决方案。
网上可以搜到大量的文章,但写的都一样,都是设置VC的项目属性,或者修改文件保存格式;或者在源代码中插入#pragma指令,又或者是替换文件的换行符之类的方法,但对于我来说都不适用,原因有:
- 我们使用QtCreator作为IDE环境,根本没有VC项目一说;
- 为跨平台开发,不能也不想再次转换文件编码格式;
- 项目文件众多,无法一一加入#pragma指令
所以确定从Qt的项目文件入手查询解决方案,因为最终是用VC的编译器进行编译,所有的编译命令(makefile)都是来自Qt的项目文件(pro文件)通过qmake程序生成的,所以项目文件中应该有方法指定这个编译选项来屏蔽此警告信息。
最后的解决方案很简单,是在项目文件中加入以下的定义:
# disable C4819 warning
QMAKE_CXXFLAGS_WARN_ON += -wd4819这样再编译项目就不会显示这个C4819警告了。(可能需要先执行qmake,或者执行Rebuild)
注:我这里的生成环境是 Qt 5.10.1 + Visual Studio 2015。可能其他版本略有差异。


1187

被折叠的 条评论
为什么被折叠?



