如何阻止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
相关产品推荐
相关产品推荐

