2017-05-11 37 views
1

我正在使用OCLint,而OCLint需要所有編譯命令來執行lint作業。現在OCLint使用xcpretty來解析xcodebuild.log以獲取編譯命令。所以,我必須建立這個項目,即使我只想要少量源文件。我想知道是否有解析xcodebuild.log以外的編譯命令?如何從Xcode獲取所有編譯命令?

+0

我認爲沒有合適的其他方式。但是你可以考慮_reverting你的問題_:你可以使用'cmake'來創建Xcode項目Cmakefiles。 BTW。 Xcode有一個很棒的內置分析器。你爲什麼不使用它? – clemens

+0

@macmoonshine非常感謝你,我不熟悉'cmake',你能不能更具體一些,我是如何實現這一點的。 Xcode buildin分析器支持分析所有源文件的一部分嗎? – GoInterface

+0

我不太熟悉'cmake';),但你可以很容易地創建Xcode項目(http://stackoverflow.com/questions/41829852/how-to-create-xcode-project-from-already-existing-混帳cmake的項目)。您可以使用_Product - > Analyze_或_Shift-Command-B_運行Xcode分析器。 – clemens

回答

1

這樣做的一種方法是編寫clang和連接器的包裝。

使用此問題:How can I force Xcode to use a custom compiler?您可以重定向Xcode以使用您自己的「clang」編譯代碼,這可能是一個python shell腳本。這個腳本只會抓取傳遞給它的命令並將其轉儲到某個文件中。

雖然有一個細節:如果你使用自定義CC Xcode也會嘗試使用它來鏈接C/C++文件,這就是爲什麼你的腳本在鏈接器模式下被調用的原因。

我已經將這項技術用於另一項任務:用-emit-llvm標記編譯我的整個項目,以便將我所有的代碼作爲LLVM位代碼。類似Python腳本的例子可以在here找到。

首先編寫「hello world」腳本。告訴Xcode使用它作爲CC,運行你的項目並在構建日誌中看到「hello world」字符串。從那裏你將知道如何進行。

+0

太好了,謝謝。 – GoInterface

0

我只是使用-dry-run和regexpr來過濾編譯命令。 -dry-run說, -dry-run do everything except actually running the commands 表現還算不錯。 如果xcode提供一個,它將會很棒。他們將是唯一可以做到這一點的人,我認爲這非常有用。