如何在由Cmake生成的ALL_BUILD和ZERO_CHECK Visual Studio 2013项目中将unicode设置为字符集?

Rém*_*oze 11 unicode cmake compiler-flags visual-studio-2013

我目前正在使用CMake创建一堆Visual Studio 2013项目,它的工作原理.但是,自动创建的ZERO_CHECK和ALL_BUILD项目默认设置为使用MBCS,尽管我希望它们使用Unicode字符集.

我确实为我的项目指定了Unicode字符集的使用,具体如下:

ADD_DEFINITIONS(-DUNICODE)
ADD_DEFINITIONS(-D_UNICODE)
Run Code Online (Sandbox Code Playgroud)

它起作用了.我尝试用以下内容设置c ++编译器标志:

SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /UMBCS /D_UNICODE /DUNICODE")
Run Code Online (Sandbox Code Playgroud)

甚至 :

ADD_DEFINITIONS(-DUNICODE)
ADD_DEFINITIONS(-D_UNICODE)
Run Code Online (Sandbox Code Playgroud)

在我的项目设置之前,但它根本不影响ZERO_CHECK和ALL_BUILD.有任何想法吗 ?

Rém*_*oze 5

我找到了解决方案。

感谢迈克,我意识到我正在寻找错误的方向。由于 CMake 不允许访问元目标(我可以理解为什么),因此必须设置 Visual Studio 环境以使 MFC 使用 MBCS 进行编译。

此链接解释了 Microsoft 为何删除了对 MFC 项目的本机 MBCS 支持,并且此链接提供了 MFC-MBCS 包的下载。

我会对此保持谨慎,因为我仍然希望我的项目使用 Unicode,并且我将相应地使用 CMake 标志。然而,ZERO_PROJECT 和 ALL_BUILD 现在编译得很好。

拉曼·夏尔马 (Raman Sharma) 的帖子让我终于看到了曙光。

谢谢你们,你们让我很开心:D

此致 !

RL