CMake多体系结构编译

问题描述 投票:45回答:3

我想知道如何编写一个CMake设置,允许使用任何编译器和操作系统编译x86和x64架构。

architecture compilation cmake
3个回答
78
投票

如果CMake有一个开箱即用的32 / 64bit选项,那将是很棒的。它没有,因此您需要应用不同的编译器或生成器依赖方法之一。例如。:

  • GCC(在Linux上)和其他一些编译器,例如太阳工作室。将CFLAGSCXXFLAGS设置为包括-m32(32位版本)或-m64(64位版本)。
  • Windows,Visual Studio生成器。使用64位发生器,例如 cmake -G "Visual Studio 10 Win64" path\to\source\dir 编译64位(x64)。在生成器名称中省略“Win64”,以构建32位
  • Mac OS X.使用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位。


3
投票

有一个CMake tutorial可以在线查看基础知识,这是从CMake书中获取的。 CMake的理念是使用多个构建目录,使用单个源树。因此,您可以在Windows上使用Visual Studio并使用32位编译器创建构建目录,使用64位编译器创建另一个目录。

CMake针对大量编译器和操作系统,但您没有提到您正在使用的语言,您正在考虑的操作系统/编译器/体系结构,以及您是否使用任何工具包/库。


0
投票

如果CMAKE_OSX_ARCHITECTURES = i386给你错误“无法识别的选项-arch”重新开始,而是尝试:

cmake -DCMAKE_SYSTEM_NAME=Darwin -DCMAKE_SYSTEM_PROCESSOR=i386 -DCMAKE_SYSTEM_VERSION=10
© www.soinside.com 2019 - 2024. All rights reserved.