Help us understand the problem. What is going on with this article?

Clang 3.4 documentの興味あるところだけ翻訳する-Clangをライブラリとして使う編(1)

More than 1 year has passed since last update.

このドキュメントは、 Clang 3.4 documentation をテキトーな日本語にゆるふわ翻訳しているドキュメントです。誤解釈などがたくさんあると思いますので信用しないでください。

アプリケーションに合ったインターフェースを選ぶ

Clangは、ツールを作るのに必要なインフラストラクチャ-プログラムのセマンティック・シンタクティクな(構文的・意味的)情報-を提供します。
このドキュメントでは、Clangのツールを作成するのにいくつかの違った手法とその特徴を簡潔に紹介します。

LibClang

LibClang は、ハイレベルで安定したCのインターフェースです。LibClangはだいたいあなたの求めているインターフェースでしょう。 LibClangを使わない大きな理由があるとき以外は、他のインターフェースを使わなくてもよいでしょう。

典型的な例としては、以下のツールが使いたい時などにLibClangは有効です:

  • Xcode
  • Clang Python Bindings

LibClangは他にもこんなときに使えます:

  • C++のような他の言語とclangのインターフェースが欲しいとき
  • 古いバージョンと互換性のある安定したインターフェースが必要なとき
  • ハイレベルでパワフルな抽象化-たとえばカーソル付きでASTを繰り返し通るとか-ができることを求めているけれど、ClangのASTのすべてを知りたくはないとき

こんなときは使えません:

  • ClangのASTの全てを操作したい

Clang Plugins

Clang Plugins を使うことで、ClangのAST(抽象構文木)に追加の操作を付け加えることができます。プラグインはランタイム時にコンパイラによってロードされるダイナミックライブラリで、各ビルド環境で簡単に結合することができます。

プラグインを使うような例:

  • 特別なlintスタイルの警告やエラーが必要なとき
  • 1つのコンパイルステップから追加の操作を作りたいとき

他にもClang Pluginはこんなときに使えます:

  • もし依存関係が変更されていたらそれを教えてくれるようなツールが欲しいとき
  • ビルドする、ビルドをブレークするツールが欲しいとき
  • ClangのASTの全てを操作したいとき

こんなときは使えません:

  • ビルド環境外でツールを使いたいとき
  • メモリ内の仮想ファイルのマッピングを含めて、Clangがどのように設定されているかを全て操作したい
  • リビルドのトリガなどの変更に関連づけられている必要の無い、プロジェクト内のファイルの特定のサブセットを実行することが必要なとき

LibTooling

Lib Tooling は、Clangのツールとしてだけではなく、スタンドアローンなツールを書くことを目的としているC++インターフェースです。

Lib Toolingを使う例:

  • 簡単なシンタックスチェッカ
  • リファクタリングツール

他にもこんなときに使えます:

  • 1つのファイルまたは特定のファイルのサブセットとしてツールを独立させて実行させたいとき
  • ClangのASTの全てを制御したいとき
  • Clang Pluginとコードを共有したいとき

こんなときには使えません:

  • 依存性の変更をトリガにしてビルドするパーツとして実行したいとき
  • ASTのAPIが変更されたときでも、今までのコードは変更する必要のないような安定したインターフェースが必要なとき
  • 箱(?)の外でハイレベルな抽象化-カーソルやコード補完が必要なとき
  • ツールをC++で書くのが嫌なとき

Clang tools はClangプロジェクトの一部であるLibTooling基盤上で動いている特定の開発ツール群です。これらはC/C++開発者の開発活動の中核を自動化・改善することを目標としています。

Clangプロジェクトとして製作中・計画中のツールの例:

  • シンタックスチェック (clang-check)
  • コンパイルエラーの自動修正 (clang-fixit)
  • 自動コードフォーマット化 (clang-format)
  • 新しい言語標準の新しい特徴のためのマイグレーションツール
  • リファクタリングツール
nhnmomonga
一山いくらの幸せなプログラマ。趣味は美味しい珈琲を淹れること。ピアノが弾けます。読書や映画はSFが好き。
http://onthesoup.hatenablog.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした