[cfe-dev] Parse custom options using CommonOptionsParser

Manasij Mukherjee manasij7479 at gmail.com
Wed Jan 21 06:10:57 PST 2015


The options after the -- get passed to the clang driver.
Those generally come from the compilcation database when the tool is used.


On Wed, Jan 21, 2015 at 6:35 PM, Christoph Viebig (lists) <
lists at christoph-viebig.de> wrote:

> Oh, thank you for your fast response. I actually did not came up with the
> idea
> to put my option before the --.
> This works, thank you!
>
> > Manasij Mukherjee <manasij7479 at gmail.com> hat am 21. Januar 2015 um
> 12:17
> > geschrieben:
> >
> >  Hi
> >  Your code seems to work fine, what is your clang version?
> >  Can you elaborate the problem ?
> >
> >  > Also the category needs to be applied
> >  on the new option, otherwise it's not shown in the help.
> >
> >  That seems to be by design.
> >
> >  Examples of invocation:
> >  $ ./bin/testtool ~/b.cpp -abc=1 -- -std=c++11
> >  1
> >
> >  $ ./bin/testtool --help
> >  <snip>
> >  My tool options:
> >
> >  -abc -
> >  <snip>
> >
> >
> >
> >  On Wed, Jan 21, 2015 at 3:41 PM, Christoph Viebig (lists)
> > <lists at christoph-viebig.de <mailto:lists at christoph-viebig.de> > wrote:
> >    > > Hello list,
> > >
> > >    I am currently working on a libTooling project and need to read
> custom
> > >    command line options for this.
> > >
> > >    Unfortunately I was not able to get the following sample code from
> > >    CommonOptionsParser [1] to run. Can you please give me an advice
> what
> > >    might be the problem here?
> > >
> > >    To make the sample code compiling I had to add the import of
> Tooling.h
> > >    and modify the Tool.run() call to retrieve the Front-end action via
> > >    .get() from the factory first. Also the category needs to be applied
> > >    on the new option, otherwise it's not shown in the help.
> > >
> > >    #include "clang/Frontend/FrontendActions.h"
> > >    #include "clang/Tooling/CommonOptionsParser.h"
> > >    #include "clang/Tooling/Tooling.h"
> > >    #include "llvm/Support/CommandLine.h"
> > >
> > >    using namespace clang::tooling;
> > >    using namespace llvm;
> > >
> > >    static cl::OptionCategory MyToolCategory("My tool options");
> > >    static cl::extrahelp CommonHelp(CommonOptionsParser::HelpMessage);
> > >    static cl::extrahelp MoreHelp("\nMore help text...");
> > >    static cl::opt<bool> YourOwnOption("abc", cl::cat(MyToolCategory));
> > >
> > >    int main(int argc, const char **argv) {
> > >    CommonOptionsParser OptionsParser(argc, argv, MyToolCategory);
> > >    ClangTool Tool(OptionsParser.getCompilations(),
> > >    OptionsParser.getSourcePathList());
> > >    llvm::outs() << YourOwnOption.getValue();
> > >    return
> > > Tool.run(newFrontendActionFactory<clang::SyntaxOnlyAction>().get());
> > >    }
> > >
> > >    Thank you very much in advance!
> > >
> > >    Best regards
> > >    Christoph
> > >
> > >    [1]
> > >
> > >
> http://clang.llvm.org/doxygen/classclang_1_1tooling_1_1CommonOptionsParser.html
> > >    _______________________________________________
> > >    cfe-dev mailing list
> > >    cfe-dev at cs.uiuc.edu <mailto:cfe-dev at cs.uiuc.edu>
> > >    http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
> > >  >
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20150121/4e2fde9b/attachment.html>


More information about the cfe-dev mailing list