可以强制CMake / MSVC对没有BOM的源文件使用UTF-8编码?C4819

ide*_*n42 5 cmake utf-8 character-encoding visual-c++

我们所有的源代码都是有效的UTF-8,但是Windows上的某些用户无法构建它们,因为他们的系统配置了不同的编码。

在不向源文件中添加BOM的情况下,是否可以告诉MSVC将所有源都视为UTF-8,而不考虑用户的系统编码是什么?

请参阅有关该主题的MSDN链接(要求添加BOM表头)。

Flo*_*ian 14

你可以试试:

add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
Run Code Online (Sandbox Code Playgroud)

默认情况下,Visual Studio 检测字节顺序标记以确定源文件是否采用编码的 Unicode 格式,例如 UTF-16 或 UTF-8。如果未找到字节顺序标记,则假定源文件是使用当前用户代码页编码的,除非您已使用/utf-8/source-charset选项指定了代码页。

参考

  • 它不起作用,直到我发现这个命令必须在“CMakeLists.txt”文件中的“add_executable()”命令之前 (5认同)