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

Visual c++ 是否可以强制CMake/MSVC对没有BOM的源文件使用UTF-8编码?C4819,visual-c++,utf-8,cmake,character-encoding,Visual C++,Utf 8,Cmake,Character Encoding,我们所有的源代码都是有效的UTF-8,但是Windows上的一些用户无法构建它们,因为他们的系统配置为不同的编码 在不向源文件添加代码的情况下,是否可以告诉MSVC将所有源代码视为UTF-8,而不考虑用户的系统编码 (需要添加BOM表标题)。您可以尝试: add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>") add_compile_options("$<$<CXX_COMPILER_ID:MSVC>

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

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

(需要添加BOM表标题)。

您可以尝试:

add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
添加编译选项($)
添加编译选项($)
默认情况下,VisualStudio检测字节顺序标记以确定源文件是否为编码的Unicode格式,例如UTF-16或UTF-8。如果未找到字节顺序标记,则假定源文件使用当前用户代码页进行编码,除非您使用
/utf-8
/source charset
选项指定了代码页

参考资料


它不起作用,直到我发现这个命令必须在
CMakeLists.txt
文件中的
add\u executable()
命令之前执行