我想知道如何编写一个CMake设置,允许使用任何编译器和操作系统编译x86和x64架构。
如果CMake有一个开箱即用的32 / 64bit选项,那将是很棒的。它没有,因此您需要应用不同的编译器或生成器依赖方法之一。例如。:
CFLAGS
和CXXFLAGS
设置为包括-m32
(32位版本)或-m64
(64位版本)。cmake -G "Visual Studio 10 Win64" path\to\source\dir
编译64位(x64)。在生成器名称中省略“Win64”,以构建32位CMAKE_OSX_ARCHITECTURES
CMake变量。
cmake -DCMAKE_OSX_ARCHITECTURES=i386 /path/to/source/dir
将编译32位版本
cmake -DCMAKE_OSX_ARCHITECTURES=x86_64 /path/to/source/dir
将编译64位。
cmake "-DCMAKE_OSX_ARCHITECTURES=x86_64;i386" /path/to/source/dir
将创建96位通用二进制文件:)以上略有改写。
http://dev.mysql.com/doc/internals/en/compiling-for-different-hardware-achitectures.html
2019年4月更新
这是一个陈旧的答案,有些事情已经改变,特别是对于Windows上的VS生成器。
使用cmake 3.14,安装Visual Studio 2019
cmake -G "Visual Studio 16 2019" -A x64 path\to\source\dir
编译64位(x64)。你通常可以在x64机器上省略-G和-A参数(你在2019年使用的是x64操作系统,对吧?)
cmake -G "Visual Studio 16 2019" -A Win32 path\to\source\dir
编译32位。
有一个CMake tutorial可以在线查看基础知识,这是从CMake书中获取的。 CMake的理念是使用多个构建目录,使用单个源树。因此,您可以在Windows上使用Visual Studio并使用32位编译器创建构建目录,使用64位编译器创建另一个目录。
CMake针对大量编译器和操作系统,但您没有提到您正在使用的语言,您正在考虑的操作系统/编译器/体系结构,以及您是否使用任何工具包/库。
如果CMAKE_OSX_ARCHITECTURES = i386给你错误“无法识别的选项-arch”重新开始,而是尝试:
cmake -DCMAKE_SYSTEM_NAME=Darwin -DCMAKE_SYSTEM_PROCESSOR=i386 -DCMAKE_SYSTEM_VERSION=10