2011-03-17 51 views
40

我想知道如何編寫CMake設置,該設置允許使用任何編譯器和操作系統編譯x86和x64體系結構。CMake多體系結構編譯

+0

可能相關:http://stackoverflow.com/questions/5280168/使交叉平臺庫與Cmake – 2011-03-17 09:27:38

回答

73

如果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位

  • 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

+0

這太棒了!但對於Visual Studio來說,它不應該是-G,因爲它是一個生成器?此外,對於Visual Studio,是否可以在CMakeLists.txt文件中設置某種標誌以自動告訴它使用哪個標誌(即請求您選擇i386還是x86-64,並根據您的響應進行設置)? – OniLink 2011-03-19 04:45:27

+0

它應該是-G,並且生成器必須通過命令行傳入。您也可以使用cmake-gui,一個基於Qt的圖形界面,並從下拉列表中選擇合適的生成器。 – 2011-03-19 14:10:50

+1

@OniLink,@Marcus。是的,它應該是-G。非常感謝您的注意!我現在修復了它(並修復了MySQL Wiki中的相同段落)。據我所知,改變了CMakeLists中Visual Studio的位置。txt是不可能的,這裏的位是生成器的屬性,並且生成器不能動態設置/更改。 – 2011-03-19 21:02:33

2

有一個CMake tutorial可在網上查閱基本知識,這是從CMake書中採取的。 CMake哲學是使用多個構建目錄,並使用單一源代碼樹。因此,您可以在Windows上使用Visual Studio,並使用32位編譯器創建構建目錄,使用64位編譯器創建構建目錄。儘管CMake的目標是大量的編譯器和操作系統,但是你沒有提到你使用的是什麼語言,你正在考慮哪種操作系統/編譯器/體系結構,以及你是否使用了任何工具包/庫。

+0

答案與問題無關。 – Yola 2018-02-05 09:15:37

0

如果CMAKE_OSX_ARCHITECTURES = I386給你的錯誤 「無法識別的選項-arch」 重新開始,而是嘗試:

cmake -DCMAKE_SYSTEM_NAME=Darwin -DCMAKE_SYSTEM_PROCESSOR=i386 -DCMAKE_SYSTEM_VERSION=10 
相關問題