[cfe-dev] ClangTool and the usual commandline options

Russell Wallace via cfe-dev cfe-dev at lists.llvm.org
Sat Dec 12 20:03:35 PST 2015


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.

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());
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20151213/dc5668ee/attachment.html>


More information about the cfe-dev mailing list