CMake 對多個編譯器的有限支援
CMake 採用嚴格的策略,對所有C 原始檔使用單一通用編譯器( CMAKE_CXX_COMPILER)。這種固有的限制為同一專案中的混合主機和交叉編譯帶來了挑戰。
無法覆蓋每個目標
目前,CMake 缺乏覆蓋 CMAKE_CXX_COMPILER 的基礎設施根據每個目標進行設定。此限制使不同架構的編譯器的同時管理變得複雜。
解:
1.多次CMake 呼叫:
認識到CMake 的局限性,最簡單的解決方案是多次執行CMake,每次都分配不同的編譯器。即使對於從同一編譯器工具鏈編譯 32 位元和 64 位元二進位檔案的情況,這種方法也很實用。
2.自訂指令(不建議):
另一種雖然不太優雅的方法是訴諸自訂指令。此解決方法涉及建立繞過 CMake 內建編譯器處理機制的美化 shell 腳本。然而,這種方法背離了 CMake 維護模組化和可移植性的目標。
3.單獨的 CMakeLists.txt 檔案:
最建議的解決方案是為不同的架構或編譯器建立單獨的 CMakeLists.txt 檔案。儘管多個建置步驟帶來不便,但這種方法確保了清晰的分離並有利於每個組件的獨立編譯。在單獨的 include() 檔案中維護公共程式碼可以增強程式碼重複使用並減少冗餘。
以上是## 如何在 CMake 中處理多個編譯器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!