CMake多体系结构编译
我想知道如何编写一个CMake设置,它允许使用任何编译器和操作系统编译x86和x64体系结构。
如果CMake有一个32/64位的选项,那将是非常棒的。 它不,所以你将需要应用不同的编译器或生成器依赖方法之一。 例如:
-
GCC(在Linux上)和一些其他编译器,例如Sun Studio。 将
CFLAGS
和CXXFLAGS
设置为包含-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位构buildcmake -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