[cfe-dev] ClangTool and the usual commandline options
Russell Wallace via cfe-dev
cfe-dev at lists.llvm.org
Sun Dec 13 04:08:58 PST 2015
That works, thanks!
On Sun, Dec 13, 2015 at 11:44 AM, Manuel Klimek <klimek at google.com> wrote:
> On Sun, Dec 13, 2015 at 5:03 AM Russell Wallace via cfe-dev <
> cfe-dev at lists.llvm.org> wrote:
>
>> I'm writing a program that uses ClangTool to parrse C++ code; per the
>> tutorials, the main module looks as below.
>>
>> It works for a single file, but more complex inputs require the usual
>> commandline options to set include path, Microsoft compatibility mode et
>> cetera, and by default you only get a few options like -help and -version.
>>
>
> a) you use a compilation database (
> http://clang.llvm.org/docs/JSONCompilationDatabase.html), which is made
> to work well for multiple files with different sets of arguments
> b) you call your tool with
> ./bin/my-tool path/to/file.cc -- <compiler args>
>
>
>
>>
>> How do you get the usual set of commandline options that clang has?
>>
>> // Apply a custom category to all command-line options so that they are
>> the
>> // only ones displayed.
>> static cl::OptionCategory MyToolCategory("my-tool options");
>>
>> // CommonOptionsParser declares HelpMessage with a description of the
>> common
>> // command-line options related to the compilation database and input
>> files.
>> // It's nice to have this help message in all tools.
>> static cl::extrahelp CommonHelp(CommonOptionsParser::HelpMessage);
>>
>> int main(int argc, const char **argv) {
>> std::set_new_handler([]() {
>> errs() << "new: " << strerror(errno) << '\n';
>> exit(1);
>> });
>>
>> sys::PrintStackTraceOnErrorSignal();
>> PrettyStackTraceProgram X(argc, argv);
>>
>> #ifdef _WIN32
>> // Stack overflow
>> AddVectoredExceptionHandler(0, handler);
>> #endif
>>
>> CommonOptionsParser OptionsParser(argc, argv, MyToolCategory);
>> ClangTool Tool(OptionsParser.getCompilations(),
>> OptionsParser.getSourcePathList());
>> return Tool.run(newFrontendActionFactory<MainAction>().get());
>> }
>>
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20151213/2c5f9fa6/attachment.html>
More information about the cfe-dev
mailing list