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()

 

posted @ 2021-06-19 16:57  咸鱼翻身!  阅读(1212)  评论(0编辑  收藏  举报