CMake VS2013将“字符集”设置为“未设置”
Posted
技术标签:
【中文标题】CMake VS2013将“字符集”设置为“未设置”【英文标题】:CMake VS2013 setting "Character Set" to "Not Set" 【发布时间】:2017-07-13 13:29:21 【问题描述】:如何让 CMAKE 生成一个字符集设置为未设置的 VS2013 项目,以便它使用 SBCS 而不是 Unicode 或 MBCS?
我的 CMAKE 脚本没有定义 UNICODE 或 MBSC,但生成的 vcxproj 仍然包含以下内容: 多字节
这个 2011 年的错误报告似乎表明它已针对 VS2010 解决,但它似乎不适用于 VS2013,或者我缺少一些东西。
https://public.kitware.com/Bug/print_bug_page.php?bug_id=12189
【问题讨论】:
能否请您提供minimal reproducible example 的CMakeLists.txt
代码?
这里是 CMakeList 文件:cmake_minimum_required(VERSION 3.5) project(test_app) remove_definitions(-D_MBCS) add_executable ($PROJECT_NAME test.cpp)
。这将生成一个字符集设置为 MBCS 的 VS 项目。根据我上面发布的链接,我的理解是取消定义 _MBCS 会导致 SBCS 项目。
不,cmVisualStudioGeneratorOptions::UsingSBCS()
只是检查现有的_SBCS
定义。
【参考方案1】:
我现在已经通过 add_definitions() 添加定义 _SBCS 来生成一个 SBCS (ASCII) 项目。仅仅通过 remove_definitions() 删除 _MBCS 是不够的。
【讨论】:
以上是关于CMake VS2013将“字符集”设置为“未设置”的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Cmake 生成的 ALL_BUILD 和 ZERO_CHECK Visual Studio 2013 项目中将 unicode 设置为字符集?
用CMake设置Visual Studio工程中预处理器定义值
如何使用vs2013的NMake在cmake中设置v120xp
VS 2013 中弃用 MBCS 对 MFC 的支持的副作用