2011-07-04 60 views
4

我正在設置一個C++項目,該項目將爲32位和64位版本的Windows和Ubuntu構建。我使用CMake 2.8.4,並且在玩了幾個小時之後,得到了VS2010的32位和64位項目。我碰到的問題是,Ubuntu端的Eclipse生成器(技術上適用於所有平臺上的Eclipse生成器),沒有32位/ 64位的單獨版本。使用CMake生成32位/ 64位Eclipse CDT項目

我意識到有一個GCC編譯器開關來指示你想要的位類型(-m32,-m64),我不介意有單獨的解決方案,但是當我在構建目錄中運行cmake時,怎麼做我告訴它我想要哪一個?如果沒有內置方式,是否可以將自定義變量/值(例如BITTYPE=64)傳遞給cmake命令?這樣我就可以用簡單的if/else來處理CMakeLists.txt文件中的其餘部分。

回答

3

在Linux下,CMake查看編譯器標誌以確定您是在編譯32位還是64位。可以通過在運行cmake的設定CMAKE_C_FLAGSCMAKE_CXX_FLAGS信息傳遞信息:

cmake -G "Eclipse CDT4 - Unix Makefiles" -DCMAKE_C_FLAGS=-m32 -DCMAKE_CXX_FLAGS=-m32 

的便攜式的方法來確定的cmake正在生成一個32位或64位的項目,然後,是查詢CMAKE_SIZEOF_VOID_P變量,例如:

if (CMAKE_SIZEOF_VOID_P EQUAL 8) 
    # 64-bit project 
else() 
    # 32-bit project 
endif() 
+0

這樣做的伎倆,謝謝! – Gemini14