C++的跨平台方案(如何解决不带 bom 的 utf8 源文件无法用 vs 编译)

2017-11-02 21:46:59 +08:00
 zhiqiang

之前系统是在 ubuntu 下开发的,整套 gcc/make 工具链已经比较熟悉。

现在有部分功能想在 windows 下编译运行。首先考虑的是用 visual studio,但有个恶心的问题是,visual studio 要求 utf8 必须要有 bom。linux 下的 utf 源代码到 vs 下编译出现一大堆错误。

刚刚尝试了 mingw/gcc,才发现不支持多线程 mutex 之类的。在网上搜了下,说需要安装 w64 版本。但我看 w64 的 gcc 版本只有 4.8.3,而且还不确定有没有别的问题。

不知道大家是怎么弄的,我估计大多数人还是用 vs,这时候该如何处理 bom 的问题?

我想最简单的方法是 git 每次下载文件时自动加上 bom,上传文件时删掉 bom。不知道有没有现成的插件或者配置文件来做这件事情?

5009 次点击
所在节点    C
42 条回复
somebody
2017-11-03 19:34:18 +08:00
研究一下 Qt 的源码,Qt 支持你用的所有工具链
FrankHB
2017-11-09 02:13:35 +08:00
很明显受到了严重过时信息的干扰。

直接上 msys2 省事,配 ArchLinux 基本开发环境部署脚本都不怎么需要改。习惯 Ubuntu 的看着办。

保险起见事前准备阅读理解(也包括线程实现之类的破事):

https://github.com/FrankHB/pl-docs/blob/master/zh-CN/mingw-vs-mingw-v64.md

https://bitbucket.org/FrankHB/yslib/wiki/Prerequisitions.zh-CN.md

要性能好不在乎部署成本 /不要 ABI 兼容不介意做小白鼠可以 https://gcc-mcf.lhmouse.com/

要对 Win32 的工具友好,纯文本 [文件] 强制要求 UTF-8+BOM+CRLF。(反正像样点的工具都支持这种配置。
)如果只是用于 cat 的片段,或者是不认识文件头的弱鸡 shell (说你呢 cmd ),一律不使用 BOM。AutoCRLF ……呵呵呵……谁用谁知道。

WSL 嘛……在 Win32 下互操作挑编辑器(没官方支持,可能编辑完 WSL 没法访问),试了下 EditPlus 可以。另外最近多任务并发看来有些内核层次上导致的 bug。

Qt 源码之类的就不用浪费时间了。不过其实大多数情况下 VS 当编辑器以外用本身就是浪费时间(暴论)。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/403068

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX