[cfe-dev] how to add objectlike macro?

Argyrios Kyrtzidis akyrtzi at gmail.com
Wed Apr 17 16:54:18 PDT 2013


On Apr 11, 2013, at 7:53 PM, huc1985 <huc1985 at 163.com> wrote:

> Thank you for reply.
> I'm not using the command line. I just want to define macro programatically. 
> 
> This is my code: 
>    DiagnosticOptions diagnosticOptions;
>    TextDiagnosticPrinter *printer = new
> TextDiagnosticPrinter(llvm::nulls(), diagnosticOptions);
> 
>    llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs> diagIDs;
>    DiagnosticsEngine diagnostics(diagIDs, printer);
> 
>    LangOptions languageOptions;
>    FileSystemOptions fileSystemOptions;
>    FileManager fileManager(fileSystemOptions);    
> 
>    SourceManager sourceManager(diagnostics, fileManager);
> 
>    TargetOptions targetOptions;	
>    targetOptions.Triple = llvm::sys::getDefaultTargetTriple();	
>    TargetInfo *pTargetInfo =
> clang::TargetInfo::CreateTargetInfo(diagnostics, targetOptions);
> 
>    HeaderSearch headerSearch(fileManager, diagnostics, languageOptions,
> pTargetInfo);
> 
>    HeaderSearchOptions headerSearchOptions;
> 
>    for (set<string>::iterator it =
> filefold.begin();it!=filefold.end();it++)
>    {
>        headerSearchOptions.AddPath(*it,frontend::Quoted,false,false,false);
>    }
>    ApplyHeaderSearchOptions(headerSearch, headerSearchOptions,
> languageOptions, pTargetInfo->getTriple());
> 
>    CompilerInstance* ci = new CompilerInstance;
>    CompilerInstance& theCompInst = *ci;
> 
>    Preprocessor *ppp = new Preprocessor(diagnostics, languageOptions,
> pTargetInfo, sourceManager, headerSearch, theCompInst);
>    Preprocessor& pp = *ppp;
>    PreprocessorOptions preprocessorOptions;
>    FrontendOptions frontendOptions;
>    InitializePreprocessor(pp,  preprocessorOptions, headerSearchOptions,
> frontendOptions);
> 
> *    for (int i=0;i<(int)compile_define.size();i++)
>    {
>        RegisterMacro(ppp, compile_define[i]);   <<<<<============== add
> Preprocessor define
>    }*

There is a simpler way, just add your macro defines with PreprocessorOptions::addMacroDef().



More information about the cfe-dev mailing list