本文整理汇总了C++中Workspace::GetProjBuildConf方法的典型用法代码示例。如果您正苦于以下问题:C++ Workspace::GetProjBuildConf方法的具体用法?C++ Workspace::GetProjBuildConf怎么用?C++ Workspace::GetProjBuildConf使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Workspace
的用法示例。
在下文中一共展示了Workspace::GetProjBuildConf方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnShowCallGraph
void CallGraph::OnShowCallGraph(wxCommandEvent& event)
{
// myLog("wxThread::IsMain(%d)", (int)wxThread::IsMain());
IConfigTool *config_tool = m_mgr->GetConfigTool();
config_tool->ReadObject(wxT("CallGraph"), &confData);
if (!wxFileExists(GetGprofPath()) || !wxFileExists(GetDotPath()))
return MessageBox(_T("Failed to locate required tools (gprof, dot). Please check the plugin settings."), wxICON_ERROR);
Workspace *ws = m_mgr->GetWorkspace();
if (!ws) return MessageBox(_("Unable to get opened workspace."), wxICON_ERROR);
wxFileName ws_cfn = ws->GetWorkspaceFileName();
wxString projectName = ws->GetActiveProjectName();
BuildMatrixPtr mtx = ws->GetBuildMatrix();
if (!mtx) return MessageBox(_("Unable to get current build matrix."), wxICON_ERROR);
wxString build_config_name = mtx->GetSelectedConfigurationName();
BuildConfigPtr bldConf = ws->GetProjBuildConf(projectName, build_config_name);
if (!bldConf) return MessageBox(_("Unable to get opened workspace."), wxICON_ERROR);
wxString projOutputFn = bldConf->GetOutputFileName();
wxString projWorkingDir = bldConf->GetWorkingDirectory();
/*
myLog("WorkspaceFileName = \"%s\"", ws_cfn.GetFullPath());
myLog("projectName \"%s\"", projectName);
myLog("build_config_name = \"%s\"", build_config_name);
myLog("projOutputFn = \"%s\"", projOutputFn);
myLog("projWorkingDir = \"%s\"", projWorkingDir);
*/
wxFileName cfn(ws_cfn.GetPath(), projOutputFn);
cfn.Normalize();
// base path
const wxString base_path = ws_cfn.GetPath();
// check source binary exists
wxString bin_fpath = cfn.GetFullPath();
if (!cfn.Exists()) {
bin_fpath = wxFileSelector("Please select the binary to analyze", base_path, "", "");
if (bin_fpath.IsEmpty()) return MessageBox("selected binary was canceled", wxICON_ERROR);
cfn.Assign(bin_fpath, wxPATH_NATIVE);
}
if (!cfn.IsFileExecutable()) return MessageBox("bin/exe isn't executable", wxICON_ERROR);
// check 'gmon.out' file exists
wxFileName gmon_cfn(base_path, GMON_FILENAME_OUT);
if (!gmon_cfn.Exists())
gmon_cfn.Normalize();
wxString gmonfn = gmon_cfn.GetFullPath();
if (!gmon_cfn.Exists()) {
gmonfn = wxFileSelector("Please select the gprof file", gmon_cfn.GetPath(), "gmon", "out");
if (gmonfn.IsEmpty()) return MessageBox("selected gprof was canceled", wxICON_ERROR);
gmon_cfn.Assign(gmonfn, wxPATH_NATIVE);
}
wxString bin, arg1, arg2;
bin = GetGprofPath();
arg1 = bin_fpath;
arg2 = gmonfn;
wxString cmdgprof = wxString::Format("%s %s %s", bin, arg1, arg2);
// myLog("about to wxExecute(\"%s\")", cmdgprof);
wxProcess *proc = new wxProcess(wxPROCESS_REDIRECT);
// wxStopWatch sw;
const int err = ::wxExecute(cmdgprof, wxEXEC_SYNC, proc);
// on sync returns 0 (success), -1 (failure / "couldn't be started")
// myLog("wxExecute() returned err %d, had pid %d", err, (int)proc->GetPid());
wxInputStream *process_is = proc->GetInputStream();
if (!process_is || !process_is->CanRead())
return MessageBox(_("wxProcess::GetInputStream() can't be opened, aborting"), wxICON_ERROR);
// start parsing and writing to dot language file
GprofParser pgp;
pgp.GprofParserStream(process_is);
// myLog("gprof done (read %d lines)", (int) pgp.lines.GetCount());
delete proc;
ConfCallGraph conf;
//.........这里部分代码省略.........