本文整理汇总了C++中ProjectPtr::GetProjectPath方法的典型用法代码示例。如果您正苦于以下问题:C++ ProjectPtr::GetProjectPath方法的具体用法?C++ ProjectPtr::GetProjectPath怎么用?C++ ProjectPtr::GetProjectPath使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ProjectPtr
的用法示例。
在下文中一共展示了ProjectPtr::GetProjectPath方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnShowCallGraph
void CallGraph::OnShowCallGraph(wxCommandEvent& event)
{
// myLog("wxThread::IsMain(%d)", (int)wxThread::IsMain());
IConfigTool* config_tool = m_mgr->GetConfigTool();
MacroManager* macro = MacroManager::Instance();
wxASSERT(macro);
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);
clCxxWorkspace* ws = m_mgr->GetWorkspace();
if(!ws) return MessageBox(_("Unable to get opened workspace."), wxICON_ERROR);
wxFileName ws_cfn = ws->GetWorkspaceFileName();
wxString projectName = ws->GetActiveProjectName();
wxString errMsg;
ProjectPtr proj = ws->FindProjectByName( projectName, errMsg );
wxString projPath = proj->GetProjectPath();
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 = macro->Expand( bldConf->GetOutputFileName(), m_mgr, projectName, build_config_name );
#ifdef __WXMSW__
if( ! projOutputFn.Lower().EndsWith( wxT(".exe") ) ) projOutputFn += wxT(".exe");
#endif //__WXMSW__
// myLog("WorkspaceFileName = \"%s\"", ws_cfn.GetFullPath());
// myLog("projectName \"%s\"", projectName);
// myLog("build_config_name = \"%s\"", build_config_name);
// myLog("projOutputFn = \"%s\"", projOutputFn);
// myLog("projPath = \"%s\"", projPath);
wxFileName cfn(projPath + wxFileName::GetPathSeparator() + 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( cfn.GetPath() + wxFileName::GetPathSeparator() + GMON_FILENAME_OUT);
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);
//.........这里部分代码省略.........