CMake多体系结构编译

Oni*_*ink 46 architecture compilation cmake

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

Vla*_*oub 81

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

  • 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位

  • Mac OS X.使用CMAKE_OSX_ARCHITECTURESCMake变量.

    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

  • 使用MSVC工具链,您还可以在cmake文件中使用`set(CMAKE_EXE_LINKER_FLAGS"/ machine:x86")`(在您的体系结构中为sub). (2认同)
  • 在Windows/MSVC上,64位和32位实际上是不同的编译器,不像例如gcc,其中architectue是一个标志,你将传递给编译器.猜猜是这个原因. (2认同)