[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