2017-08-06 74 views
1

我讀過關於工具的一個名爲「包含你使用」的工具,它可以幫助我清理多餘的工作,包括我的源代碼中的 。我知道有一個編譯器LLVM(clang)和gcc版本。 我的問題是 1.爲什麼這個工具是編譯器依賴的,而不是編譯器的「跨平臺」。爲什麼從一開始 該工具的創建者並沒有使其與編譯器無關?它與 具有的特殊實現有關嗎? 2.如果我想採取兼容llvm的工具版本,我想使它與gcc兼容(因爲我使用gcc的 )。我必須爲此做些什麼?「包括你使用的」

+1

該工具依賴於僅由clang提供的API。大多數編譯器不是在開發工具時考慮的,也不會公開正確的信息來製作這樣的工具。你的代碼應該在clang中編譯得很好,所以如果你必須繼續使用gcc,那麼就使用它來運行你的工具。將工具移植到gcc可能是不可能的,或者至少是一項巨大的任務。 – xaxxon

回答

0

大多數情況下,包含你應該使用什麼應該能夠處理任何有效的C++代碼庫,無論該代碼庫是否使用gcc或clang編寫。我最近有機會在通常使用gcc編譯的非常大的代碼庫上運行Include-What-You-Use,它運行良好。所以在這個意義上它已經兼容了。

也就是說,它可能無法正常工作。它提供的一些信息很可能是錯誤的,即使它是一個叮噹聲代碼庫。所以總是手動驗證輸出。