2017-05-11 6 views
1

私はOCLintに取り組んでおり、OCLintはlintジョブを実行するためにはすべてのコンパイルコマンドが必要です。コンパイルコマンドを取得するためにxcodebuild.logを解析するためにxcprettyを使用してOCLintになりました。だから、私はわずかなソースファイルをほっとしたくてもプロジェクトを構築しなければならない。とにかく、xcodebuild.logを解析する以外のコンパイルコマンドを取得することはありますか?Xcodeからすべてのコンパイルコマンドを取得するにはどうしたらいいですか?

+0

他には適切な方法がないと思います。しかし、あなたはあなたの問題を再現することについて考えることができます_:XcodeプロジェクトCmakefilesを作成できる 'cmake'を使うことができます。 BTW。 Xcodeには優れた組み込みアナライザがあります。なぜあなたはそれを使用していないのですか? – clemens

+0

@macmoonshine非常に、私は 'cmake'に精通していない、より具体的な、私はこれを達成する方法を教えていただきありがとうございます。また、Xcodeビルドアナライザのサポートはすべてのソースファイルの一部を分析しますか? – GoInterface

+0

私は 'cmake';に慣れていませんが)、Xcodeプロジェクトを簡単に作成できます(http://stackoverflow.com/questions/41829852/how-to-create-xcode-project-from-already-existing- git-cmake-project)を実行します。 _Product-> Analyze_または_Shift-Command-B_でXcodeアナライザを実行できます。 – clemens

答えて

1

これを行う1つの方法は、clangとリンカーのラッパーを作成することです。

この答えを使用して:How can I force Xcode to use a custom compiler?あなたはpythonシェルスクリプトかもしれない独自の "clang"でコードをコンパイルするようにXcodeをリダイレクトすることができます。このスクリプトは、渡されたコマンドを取得して、それをいくつかのファイルにダンプします。

カスタムを使用する場合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で提供されていれば素晴らしいことでしょう。彼らはこれを行うことができる唯一の人になります、そして、それはかなり有用だと思います。

関連する問題