VS编译cmake工程提示 “无法识别的标记”错误解决方法
背景:
在windows环境下,使用VS2017编辑cmake工程代码并添加中文注释后,编译时出现“无法识别的标记”错误,编译失败。
原因:
参考:vs编码对编译的影响(UTF-8 no BOM编译通不过)
UTF-8编码分为带BOM和不带BOM两种,VS只支持带BOM的,因此当文件为不带BOM且有中文时,在VS下编译可能出错。
而在linux中gcc编译的时候,文件格式为utf-8无BOM格式,故跨平台时,必须使用无BOM格式的。
解决方法:
方法一(跨平台时不推荐)
使用notepad++或vs code将文件格式转换为UTF-8 with BOM编码。
notepad++
vo code
方法二(cmake跨平台推荐)
在CMakeLists.txt中加入以下代码,增加对UTF-8的编译支持
if(WIN32) add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/source-charset:utf-8>") add_compile_options("$<$<C_COMPILER_ID:MSVC>:/source-charset:utf-8>") endif()