问题描述

在Windows下,对下载得到的开源代码使用CMake生成Visual Studio项目后,在Visual Studio中编译64位文件时出现错误,提示

模块计算机类型“x64”与目标计算机类型“X86”冲突

原因分析

一般来说如果出现上述错误,则此项目默认是只有“Win32”编译选项,而没有“x64”选项的;在手动添加“x64”进行编译时就出现这种错误。不严谨地来说,就是在仅支持32位编译的VS项目中,尝试进行64位编译,势必会遇到很多问题。

初始的源码并没有对编译的位数进行限制,那是谁决定的生成支持多少位编译的项目的呢?当然是CMake了:在执行cmake命令时,默认就是32位(或者在CMake GUI中,默认的generator就是32位)。所以只需要让CMake生成适合64位的项目就好啦!

解决方法

命令行

Windows下,通过cmake命令的-G选项指定generator,如Visual Studio 2015 x64的命令就是

cmake -G "Visual Studio 14 Win64" path\to\source\dir

这里VS2015对应版本14,2013对应12。

想要指定32位则省略-G部分或“Win64”即可

cmake path\to\source\dir
cmake -G "Visual Studio 14" path\to\source\dir

GUI

通过CMake GUI也可以很方便地指定generator,只需点击“configure”按钮,即弹出generator下拉框,选择合适的generator就可以了,如下图所示。

cmake

重新生成项目后,再在VS中打开,看看编译默认选项是不是“x64”了?现在放心大胆地编译吧!

参考