llvm::IntrusiveRefCntPtr<clang::HeaderSearchOptions> headerSearchOptions(new clang::HeaderSearchOptions());
headerSearchOptions->ResourceDir = "/opt/llvm_build" "/lib/clang/" CLANG_VERSION_STRING;
for (int i = 2; i < argc; i++) {
headerSearchOptions->AddPath(argv[i],
clang::frontend::Angled,
false,
false);
}
clang::TargetOptions targetOptions;
targetOptions.Triple = llvm::sys::getDefaultTargetTriple();
clang::TargetInfo *pTargetInfo =
clang::TargetInfo::CreateTargetInfo(
*pDiagnosticsEngine,
&targetOptions);
clang::HeaderSearch headerSearch(headerSearchOptions,
fileManager,
*pDiagnosticsEngine,
languageOptions,
pTargetInfo);
clang::CompilerInstance compInst;
llvm::IntrusiveRefCntPtr<clang::PreprocessorOptions> pOpts( new clang::PreprocessorOptions());
clang::Preprocessor preprocessor(
pOpts,
*pDiagnosticsEngine,
languageOptions,
pTargetInfo,
sourceManager,
headerSearch,
compInst);
m_hso = llvm::IntrusiveRefCntPtr<clang::HeaderSearchOptions>(new clang::HeaderSearchOptions());m_hso->AddPath( pathName.c_str(),
clang::frontend::Angled,
false,
false);/*add the source file*/const clang::FileEntry *pFile = m_ci->getFileManager().getFile(fileName.c_str());m_ci->getSourceManager().createMainFileID(pFile);/*parse*/clang::InitializePreprocessor(m_ci->getPreprocessor(),
m_ci->getPreprocessorOpts(),
*m_hso,
m_ci->getFrontendOpts());
转载于:https://my.oschina.net/lyyrj/blog/404478