CMake多体系结构编译

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

如果CMake有一个32/64位的选项,那将是非常棒的。 它不,所以你将需要应用不同的编译器或生成器依赖方法之一。 例如:

  • GCC(在Linux上)和一些其他编译器,例如Sun Studio。 将CFLAGSCXXFLAGS设置为包含-m32 (32位版本)或-m64 (64位版本)。

  • Windows,Visual Studio生成器。 使用64位发生器,例如

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

    编译64位(x64)。 在发生器名称中省略“Win64”,为32位构build

  • Mac OS X.使用CMAKE_OSX_ARCHITECTURES CMakevariables。

    cmake -DCMAKE_OSX_ARCHITECTURES=i386 /path/to/source/dir将编译32位构build

    cmake -DCMAKE_OSX_ARCHITECTURES=x86_64 /path/to/source/dir会编译64位。

    cmake "-DCMAKE_OSX_ARCHITECTURES=x86_64;i386" /path/to/source/dir将创build96位通用二进制文件:)

以上略有修改。

http://dev.mysql.com/doc/internals/en/compiling-for-different-hardware-achitectures.html

有一个CMake教程可以在网上查阅基础知识,这是从CMake书中摘取的。 CMake的哲学是使用多个构build目录,只有一个源代码树。 因此,您可以在Windows上使用Visual Studio,并使用32位编译器创build一个构build目录,使用64位编译器创build一个构build目录。

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

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

 cmake -DCMAKE_SYSTEM_NAME=Darwin -DCMAKE_SYSTEM_PROCESSOR=i386 -DCMAKE_SYSTEM_VERSION=10