我的程序庫需要讀入big-endian整數(4字節)並將它們轉換爲主機的endian順序進行處理。雖然* nix ntohl
已經在Windows下使用ntohl
要求使用Ws2_32.dll
(Winsock)。使用CMake檢測字節順序
這樣的依賴關係是我寧願消除的依賴關係。最簡單的做法似乎是編寫我自己的端到端交換函數(一個簡單的練習,考慮到性能並不是真正關心的問題)。但是,這需要一種方法來確定我的庫正在編譯的系統的字節序(因此我可以在大端系統上交換功能)。
由於好像沒有標準的預處理器定義,所以看起來好像有必要使用我的編譯系統(cmake)來確定它。做這件事的最好方法是什麼? (我厭倦了'編譯一個測試文件,看'類型的解決方案,因爲它們似乎會禁止交叉編譯。)
注僅支持:CMake的實際上有交叉編譯合理的支持。對於需要運行測試程序的檢查,它會構建測試程序,然後等待您將高速緩存變量設置爲正確的結果。請參閱http://www.paraview.org/Wiki/CMake_Cross_Compiling。對於關注交叉編譯有點讚賞。 – 2010-10-08 00:20:00