本文整理汇总了C++中Driver::GetTemporaryPath方法的典型用法代码示例。如果您正苦于以下问题:C++ Driver::GetTemporaryPath方法的具体用法?C++ Driver::GetTemporaryPath怎么用?C++ Driver::GetTemporaryPath使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Driver
的用法示例。
在下文中一共展示了Driver::GetTemporaryPath方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ExecuteTemplightJobs
static
void ExecuteTemplightJobs(Driver &TheDriver, DiagnosticsEngine &Diags,
Compilation &C, Job &J, const char* Argv0,
SmallVector<std::pair<int, const Command *>, 4>& FailingCommands) {
if (JobList *jobs = dyn_cast<JobList>(&J)) {
for (JobList::iterator it = jobs->begin(), it_end = jobs->end(); it != it_end; ++it)
ExecuteTemplightJobs(TheDriver, Diags, C, *it, Argv0, FailingCommands);
return;
}
Command *command = dyn_cast<Command>(&J);
// Since argumentsFitWithinSystemLimits() may underestimate system's capacity
// if the tool does not support response files, there is a chance/ that things
// will just work without a response file, so we silently just skip it.
if ( command &&
command->getCreator().getResponseFilesSupport() != Tool::RF_None &&
llvm::sys::argumentsFitWithinSystemLimits(command->getArguments()) ) {
std::string TmpName = TheDriver.GetTemporaryPath("response", "txt");
command->setResponseFile(C.addTempFile(C.getArgs().MakeArgString(
TmpName.c_str())));
}
if ( command && (StringRef(command->getCreator().getName()) == "clang") ) {
// Initialize a compiler invocation object from the clang (-cc1) arguments.
const ArgStringList &cc_arguments = command->getArguments();
const char** args_start = const_cast<const char**>(cc_arguments.data());
const char** args_end = args_start + cc_arguments.size();
std::unique_ptr<CompilerInstance> Clang(new CompilerInstance());
int Res = !CompilerInvocation::CreateFromArgs(
Clang->getInvocation(), args_start, args_end, Diags);
if(Res)
FailingCommands.push_back(std::make_pair(Res, command));
Clang->getFrontendOpts().DisableFree = false;
// Infer the builtin include path if unspecified.
void *GetExecutablePathVP = (void *)(intptr_t) GetExecutablePath;
if (Clang->getHeaderSearchOpts().UseBuiltinIncludes &&
Clang->getHeaderSearchOpts().ResourceDir.empty())
Clang->getHeaderSearchOpts().ResourceDir =
CompilerInvocation::GetResourcesPath(Argv0, GetExecutablePathVP);
// Create the compilers actual diagnostics engine.
Clang->createDiagnostics();
if (!Clang->hasDiagnostics()) {
FailingCommands.push_back(std::make_pair(1, command));
return;
}
LocalOutputFilename = ""; // Let the filename be created from options or output file name.
std::string TemplightOutFile = TemplightAction::CreateOutputFilename(
Clang.get(), "", InstProfiler, OutputToStdOut, MemoryProfile);
// Check if templight filename is in a temporary path:
llvm::SmallString<128> TDir;
llvm::sys::path::system_temp_directory(true, TDir);
if ( TDir.equals(llvm::sys::path::parent_path(llvm::StringRef(TemplightOutFile))) ) {
C.addTempFile(TemplightOutFile.c_str());
TempOutputFiles.push_back(TemplightOutFile);
}
// Execute the frontend actions.
Res = ExecuteTemplightInvocation(Clang.get());
if(Res)
FailingCommands.push_back(std::make_pair(Res, command));
} else {
C.ExecuteJob(J, FailingCommands);
}
}