web-dev-qa-db-ja.com

CMakeマルチアーキテクチャコンパイル

任意のコンパイラとOSを使用してx86アーキテクチャとx64アーキテクチャの両方をコンパイルできるCMakeセットアップを作成する方法を知りたいです。

45
OniLink

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)をコンパイルします。 32ビット用にビルドするには、ジェネレーター名に「Win64」を省略します

  • 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 OSを使用していますよね?)

cmake -G "Visual Studio 16 2019" -A Win32 path\to\source\dir

32ビットをコンパイルします。

80

CMakeチュートリアル があり、基本について説明しています。これはCMakeブックから引用されています。 CMakeの哲学は、単一のソースツリーで複数のビルドディレクトリを使用することです。したがって、WindowsでVisual Studioを使用し、32ビットコンパイラーを使用してビルドディレクトリを作成し、64ビットコンパイラーを使用してビルドディレクトリを作成できます。

CMakeは多数のコンパイラとオペレーティングシステムを対象としていますが、使用している言語、使用しているオペレーティングシステム/コンパイラ/アーキテクチャ、およびツールキット/ライブラリを使用している場合は言及しません。

3

CMAKE_OSX_ARCHITECTURES = i386で「認識されないオプション-Arch」というエラーが表示される場合は、最初からやり直してください。

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