You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止CMake将Visual Studio项目字符集设为多字节字符集

解决CMake生成VS项目时字符集设为“未设置”的问题

要让Visual Studio项目的字符集设置为“未设置”(既不启用多字节也不启用Unicode),你需要通过CMake的特定变量覆盖默认行为,仅用remove_definitions("-D_MBCS")无法解决问题,具体操作如下:

全局生效(所有目标)

在CMakeLists.txt的开头添加以下配置,全局关闭自动字符集定义:

# 禁用C和C++的自动字符集设置
set(CMAKE_C_CHARSET "")
set(CMAKE_CXX_CHARSET "")

单个目标生效

如果只需修改特定项目目标的字符集,使用set_target_properties:

set_target_properties(你的目标名称 PROPERTIES
    C_CHARSET ""
    CXX_CHARSET ""
)

为什么remove_definitions无效?

CMake配置Visual Studio项目时,会根据内置字符集变量自动生成_MBCS或UNICODE预定义宏,直接调用remove_definitions无法覆盖CMake的内置逻辑,必须通过修改上述字符集变量彻底关闭自动设置。

完成设置后重新生成项目,Visual Studio“高级”设置里的字符集会显示为“未设置”,同时编译器也不会再传递_MBCS或UNICODE的预定义参数。

内容的提问来源于stack exchange,提问作者David Partridge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 19:02:02