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 的支持的副作用

使用cmake为vs2013配置cuda项目出现“invalid device function”错误

Cmake:未设置 CMAKE_MAKE_PROGRAM