it-swarm.com.de

CMake Multiarchitecture Compilation

Ich möchte wissen, wie ich ein CMake-Setup schreiben könnte, das die Kompilierung für x86- und x64-Architekturen mit jedem Compiler und Betriebssystem ermöglicht.

45
OniLink

Es wäre großartig, wenn CMake eine 32/64-Bit-Option hätte. Dies ist jedoch nicht der Fall. Daher müssen Sie eine der verschiedenen vom Compiler oder Generator abhängigen Methoden anwenden. Z.B.:

  • GCC (unter Linux) und einige andere Compiler, z. Sun Studio. Legen Sie CFLAGS und CXXFLAGS fest, um -m32 (32-Bit-Build) oder -m64 (64-Bit-Build) einzuschließen.

  • Windows, Visual Studio-Generator. Verwenden Sie einen 64-Bit-Generator, z. 

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

    64-Bit (x64) zu kompilieren. Lassen Sie "Win64" im Namen des Generators aus, um 32 Bit zu erstellen

  • Mac OS X. Verwenden Sie die Variable CMAKE_OSX_ARCHITECTURES CMake. 

    cmake -DCMAKE_OSX_ARCHITECTURES=i386 /path/to/source/dir kompiliert den 32-Bit-Build

    cmake -DCMAKE_OSX_ARCHITECTURES=x86_64 /path/to/source/dir wird 64 Bit kompilieren.

    cmake "-DCMAKE_OSX_ARCHITECTURES=x86_64;i386" /path/to/source/dir erstellt 96-Bit-Universal-Binärdateien :)

Das obige ist etwas umformuliert.

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

77

Es gibt ein CMake-Tutorial , das online verfügbar ist, um die Grundlagen zu erläutern. Dies ist dem CMake-Buch entnommen. Die CMake-Philosophie besteht darin, mehrere Build-Verzeichnisse mit einem einzigen Quellbaum zu verwenden. Sie können also Visual Studio unter Windows verwenden und mit dem 32-Bit-Compiler ein Build-Verzeichnis und mit dem 64-Bit-Compiler ein anderes erstellen.

CMake zielt auf eine große Anzahl von Compilern und Betriebssystemen ab. Sie erwähnen jedoch nicht, welche Sprache Sie verwenden, an welches Betriebssystem/Compiler/Architekturen Sie denken und ob Sie Toolkits/Bibliotheken verwenden.

3

Wenn CMAKE_OSX_ARCHITECTURES = i386 den Fehler "unrecognized option -Arch" anzeigt, beginnen Sie erneut und versuchen Sie es stattdessen:

cmake -DCMAKE_SYSTEM_NAME=Darwin -DCMAKE_SYSTEM_PROCESSOR=i386 -DCMAKE_SYSTEM_VERSION=10
0
Patrick Rose