forked from OSchip/llvm-project
111 lines
4.9 KiB
HTML
111 lines
4.9 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
|
"http://www.w3.org/TR/html4/strict.dtd">
|
|
<html>
|
|
<head>
|
|
<title>Clang Tools</title>
|
|
<link type="text/css" rel="stylesheet" href="../menu.css">
|
|
<link type="text/css" rel="stylesheet" href="../content.css">
|
|
</head>
|
|
<body>
|
|
|
|
<!--#include virtual="../menu.html.incl"-->
|
|
|
|
<div id="content">
|
|
|
|
<h1>Clang Tools</h1>
|
|
<p>Clang Tools are standalone command line (and potentially GUI) tools design
|
|
for use by C++ developers who are already using and enjoying Clang as their
|
|
compiler. These tools provide developer-oriented functionality such as fast
|
|
syntax checking, automatic formatting, refactoring, etc.</p>
|
|
|
|
<p>Only a couple of the most basic and fundamental tools are kept in the primary
|
|
Clang Subversion project. The rest of the tools are kept in a side-project so
|
|
that developers who don't want or need to build them don't. If you want to get
|
|
access to the extra Clang Tools repository, simply check it out into the tools
|
|
tree of your Clang checkout and follow the usual process for building and
|
|
working with a combined LLVM/Clang checkout:</p>
|
|
<ul>
|
|
<li>With Subversion:
|
|
<ul>
|
|
<li><tt>cd llvm/tools/clang/tools</tt></li>
|
|
<li><tt>svn co http://llvm.org/svn/llvm-project/clang-tools-extra/trunk
|
|
extra</tt></li>
|
|
</ul>
|
|
</li>
|
|
<li>Or with Git:
|
|
<ul>
|
|
<li><tt>cd llvm/tools/clang/tools</tt></li>
|
|
<li><tt>git clone http://llvm.org/git/clang-tools-extra.git extra</tt></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
|
|
<p>This document describes a high-level overview of the organization of Clang
|
|
Tools within the project as well as giving an introduction to some of the more
|
|
important tools. However, it should be noted that this document is currently
|
|
focused on Clang and Clang Tool developers, not on end users of these tools.</p>
|
|
|
|
<!-- ======================================================================= -->
|
|
<h2 id="org">Clang Tools Organization</h2>
|
|
<!-- ======================================================================= -->
|
|
|
|
<p>Clang Tools are CLI or GUI programs that are intended to be directly used by
|
|
C++ developers. That is they are <em>not</em> primarily for use by Clang
|
|
developers, although they are hopefully useful to C++ developers who happen to
|
|
work on Clang, and we try to actively dogfood their functionality. They are
|
|
developed in three components: the underlying infrastructure for building
|
|
a standalone tool based on Clang, core shared logic used by many different tools
|
|
in the form of refactoring and rewriting libraries, and the tools
|
|
themselves.</p>
|
|
|
|
<p>The underlying infrastructure for Clang Tools is the
|
|
<a href="LibTooling.html">LibTooling</a> platform. See its documentation for
|
|
much more detailed information about how this infrastructure works. The common
|
|
refactoring and rewriting toolkit-style library is also part of LibTooling
|
|
organizationally.</p>
|
|
|
|
<p>A few Clang Tools are developed along side the core Clang libraries as
|
|
examples and test cases of fundamental functionality. However, most of the tools
|
|
are developed in a side repository to provide easy separation from the core
|
|
libraries. We intentionally do not support public libraries in the side
|
|
repository, as we want to carefully review and find good APIs for libraries as
|
|
they are lifted out of a few tools and into the core Clang library set.</p>
|
|
|
|
<p>Regardless of which repository Clang Tools' code resides in, the development
|
|
process and practices for all Clang Tools are exactly those of Clang itself.
|
|
They are entirely within the Clang <em>project</em>, regardless of the version
|
|
control scheme.</p>
|
|
|
|
|
|
<!-- ======================================================================= -->
|
|
<h2 id="coretools">Core Clang Tools</h2>
|
|
<!-- ======================================================================= -->
|
|
|
|
<p>The core set of Clang tools that are within the main repository are tools
|
|
that very specifically compliment, and allow use and testing of <em>Clang</em>
|
|
specific functionality.</p>
|
|
|
|
<h3 id="clang-check"><tt>clang-check</tt></h3>
|
|
<p>This tool combines the LibTooling framework for running a Clang tool with the
|
|
basic Clang diagnostics by syntax checking specific files in a fast, command
|
|
line interface. It can also accept flags to re-display the diagnostics in
|
|
different formats with different flags, suitable for use driving an IDE or
|
|
editor. Furthermore, it can be used in fixit-mode to directly apply fixit-hints
|
|
offered by clang.</p>
|
|
|
|
<p>FIXME: Link to user-oriented clang-check documentation.</p>
|
|
|
|
<!-- ======================================================================= -->
|
|
<h2 id="registerplugin">Extra Clang Tools</h2>
|
|
<!-- ======================================================================= -->
|
|
|
|
<p>As various categories of Clang Tools are added to the extra repository,
|
|
they'll be tracked here. The focus of this documentation is on the scope and
|
|
features of the tools for other tool developers; each tool should provide its
|
|
own user-focused documentation.</p>
|
|
|
|
</div>
|
|
</body>
|
|
</html>
|
|
|