【发布时间】:2011-07-17 02:04:52
【问题描述】:
我想知道如何编写允许使用任何编译器和操作系统编译 x86 和 x64 架构的 CMake 设置。
【问题讨论】:
标签: architecture compilation cmake
我想知道如何编写允许使用任何编译器和操作系统编译 x86 和 x64 架构的 CMake 设置。
【问题讨论】:
标签: architecture compilation cmake
如果 CMake 有一个开箱即用的 32/64 位选项,那就太好了。它没有,因此您需要应用不同的编译器或生成器依赖方法之一。例如:
GCC(在 Linux 上)和其他一些编译器,例如太阳工作室。将CFLAGS 和CXXFLAGS 设置为包括-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位。
【讨论】:
set(CMAKE_EXE_LINKER_FLAGS "/machine:x86")(架构中的子目录)。
如果 CMAKE_OSX_ARCHITECTURES=i386 给您错误“无法识别的选项 -arch”,请重新开始,然后尝试:
cmake -DCMAKE_SYSTEM_NAME=Darwin -DCMAKE_SYSTEM_PROCESSOR=i386 -DCMAKE_SYSTEM_VERSION=10
【讨论】:
网上有一个CMake tutorial 来复习基础知识,这取自 CMake 书。 CMake 的理念是使用多个构建目录和一个源代码树。因此,您可以在 Windows 上使用 Visual Studio,并使用 32 位编译器创建一个构建目录,并使用 64 位编译器创建另一个。
CMake 针对大量编译器和操作系统,但您没有提及您正在使用什么语言、您正在考虑什么操作系统/编译器/架构以及您是否使用任何工具包/库。
【讨论】: