本文整理汇总了C++中ProjectBuildTarget::GetCompilerOptions方法的典型用法代码示例。如果您正苦于以下问题:C++ ProjectBuildTarget::GetCompilerOptions方法的具体用法?C++ ProjectBuildTarget::GetCompilerOptions怎么用?C++ ProjectBuildTarget::GetCompilerOptions使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ProjectBuildTarget
的用法示例。
在下文中一共展示了ProjectBuildTarget::GetCompilerOptions方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CheckRequirements
bool CheckRequirements(wxString& ExeTarget, wxString& CommandLineArguments)
{
cbProject* Project = Manager::Get()->GetProjectManager()->GetActiveProject();
// if no project open, exit
if (!Project)
{
wxString msg = _("You need to open a project\nbefore using the plugin!");
cbMessageBox(msg, _("Error"), wxICON_ERROR | wxOK, Manager::Get()->GetAppWindow());
Manager::Get()->GetLogManager()->DebugLog(msg);
return false;
}
// check the project s active target -> it should be executable !!
wxString strTarget = Project->GetActiveBuildTarget();
if(strTarget.empty())
{
wxString msg = _("You need to have an (executable) target in your open project\nbefore using the plugin!");
cbMessageBox(msg, _("Error"), wxICON_ERROR | wxOK, Manager::Get()->GetAppWindow());
Manager::Get()->GetLogManager()->DebugLog(msg);
return false;
}
// let's get the target
ProjectBuildTarget* Target = Project->GetBuildTarget(strTarget); // NOT const because of GetNativeFilename() :-(
if(!Target)
{
wxString msg = _("You need to have an (executable) target in your open project\nbefore using the plugin!");
cbMessageBox(msg, _("Error"), wxICON_ERROR | wxOK, Manager::Get()->GetAppWindow());
Manager::Get()->GetLogManager()->DebugLog(msg);
return false;
}
// check the type of the target
const TargetType TType = Target->GetTargetType();
if(!(TType == ttExecutable || TType == ttConsoleOnly))
{
wxString msg = _("You need to have an ***executable*** target in your open project\nbefore using the plugin!");
cbMessageBox(msg, _("Error"), wxICON_ERROR | wxOK, Manager::Get()->GetAppWindow());
Manager::Get()->GetLogManager()->DebugLog(msg);
return false;
}
else
{
if(TType == ttExecutable || ttConsoleOnly)
{
// ExeTarget = Target->GetExecutableFilename(); /// hmmm : this doesn't return correct stuff !!!
ExeTarget = Target->GetOutputFilename();
}
}
if(Target->GetCompilerOptions().Index(_T("-g")) == wxNOT_FOUND)
{
wxString msg = _("Your target needs to have been compiled with the -g option\nbefore using the plugin!");
cbMessageBox(msg, _("Error"), wxICON_ERROR | wxOK, Manager::Get()->GetAppWindow());
Manager::Get()->GetLogManager()->DebugLog(msg);
return false;
}
CommandLineArguments = Target->GetExecutionParameters();
return true;
} // end of CheckRequirements
示例2: ExecuteCppCheck
//{ CppCheck
int CppCheck::ExecuteCppCheck(cbProject* Project)
{
if ( !DoVersion(_T("cppcheck"), _T("cppcheck_app")) )
return -1;
TCppCheckAttribs CppCheckAttribs;
wxFile InputFile;
CppCheckAttribs.InputFileName = _T("CppCheckInput.txt");
if ( !InputFile.Create(CppCheckAttribs.InputFileName, true) )
{
cbMessageBox(_("Failed to create input file 'CppCheckInput.txt' for cppcheck.\nPlease check file/folder access rights."),
_("Error"), wxICON_ERROR | wxOK, Manager::Get()->GetAppWindow());
return -1;
}
for (FilesList::iterator it = Project->GetFilesList().begin(); it != Project->GetFilesList().end(); ++it)
{
ProjectFile* pf = *it;
// filter to avoid including non C/C++ files
if ( pf->relativeFilename.EndsWith(FileFilters::C_DOT_EXT)
|| pf->relativeFilename.EndsWith(FileFilters::CPP_DOT_EXT)
|| pf->relativeFilename.EndsWith(FileFilters::CC_DOT_EXT)
|| pf->relativeFilename.EndsWith(FileFilters::CXX_DOT_EXT)
|| pf->relativeFilename.EndsWith(FileFilters::CPLPL_DOT_EXT)
|| (FileTypeOf(pf->relativeFilename) == ftHeader)
|| (FileTypeOf(pf->relativeFilename) == ftTemplateSource) )
{
InputFile.Write(pf->relativeFilename + _T("\n"));
}
}
InputFile.Close();
MacrosManager* MacrosMgr = Manager::Get()->GetMacrosManager();
ProjectBuildTarget* Target = Project->GetBuildTarget(Project->GetActiveBuildTarget());
// project include dirs
const wxArrayString& IncludeDirs = Project->GetIncludeDirs();
for (unsigned int Dir = 0; Dir < IncludeDirs.GetCount(); ++Dir)
{
wxString IncludeDir(IncludeDirs[Dir]);
if (Target)
MacrosMgr->ReplaceMacros(IncludeDir, Target);
else
MacrosMgr->ReplaceMacros(IncludeDir);
CppCheckAttribs.IncludeList += _T("-I\"") + IncludeDir + _T("\" ");
}
if (Target)
{
// target include dirs
const wxArrayString& targetIncludeDirs = Target->GetIncludeDirs();
for (unsigned int Dir = 0; Dir < targetIncludeDirs.GetCount(); ++Dir)
{
wxString IncludeDir(targetIncludeDirs[Dir]);
MacrosMgr->ReplaceMacros(IncludeDir, Target);
CppCheckAttribs.IncludeList += _T("-I\"") + IncludeDir + _T("\" ");
}
}
// project #defines
const wxArrayString& Defines = Project->GetCompilerOptions();
for (unsigned int Opt = 0; Opt < Defines.GetCount(); ++Opt)
{
wxString Define(Defines[Opt]);
if (Target)
MacrosMgr->ReplaceMacros(Define, Target);
else
MacrosMgr->ReplaceMacros(Define);
if ( Define.StartsWith(_T("-D")) )
CppCheckAttribs.DefineList += Define + _T(" ");
}
if (Target)
{
// target #defines
const wxArrayString& targetDefines = Target->GetCompilerOptions();
for (unsigned int Opt = 0; Opt < targetDefines.GetCount(); ++Opt)
{
wxString Define(targetDefines[Opt]);
MacrosMgr->ReplaceMacros(Define, Target);
if ( Define.StartsWith(_T("-D")) )
CppCheckAttribs.DefineList += Define + _T(" ");
}
}
return DoCppCheckExecute(CppCheckAttribs);
}
示例3: ProcessCompilerOptions
void ProjectOptionsManipulator::ProcessCompilerOptions(cbProject* prj, const wxString& opt, const wxString& opt_new, wxArrayString& result)
{
ProjectOptionsManipulatorDlg::EProjectScanOption scan_opt = m_Dlg->GetScanOption();
switch (scan_opt)
{
case ProjectOptionsManipulatorDlg::eSearch:
case ProjectOptionsManipulatorDlg::eSearchNot:
{
if ( m_Dlg->GetOptionActive(ProjectOptionsManipulatorDlg::eProject) )
{
bool has_opt = HasOption(prj->GetCompilerOptions(), opt);
if (has_opt && scan_opt==ProjectOptionsManipulatorDlg::eSearch)
{
result.Add(wxString::Format(_("Project '%s': Contains compiler option '%s'."),
prj->GetTitle().wx_str(), opt.wx_str()));
}
else if (!has_opt && scan_opt==ProjectOptionsManipulatorDlg::eSearchNot)
{
result.Add(wxString::Format(_("Project '%s': Does not contain compiler option '%s'."),
prj->GetTitle().wx_str(), opt.wx_str()));
}
}
if ( m_Dlg->GetOptionActive(ProjectOptionsManipulatorDlg::eTarget) )
{
for (int i=0; i<prj->GetBuildTargetsCount(); ++i)
{
ProjectBuildTarget* tgt = prj->GetBuildTarget(i);
if (tgt)
{
bool has_opt = HasOption(tgt->GetCompilerOptions(), opt);
if (has_opt && scan_opt==ProjectOptionsManipulatorDlg::eSearch)
{
result.Add(wxString::Format(_("Project '%s', target '%s': Contains compiler option '%s'."),
prj->GetTitle().wx_str(), tgt->GetTitle().wx_str(), opt.wx_str()));
}
else if (!has_opt && scan_opt==ProjectOptionsManipulatorDlg::eSearchNot)
{
result.Add(wxString::Format(_("Project '%s', target '%s': Does not contain compiler option '%s'."),
prj->GetTitle().wx_str(), tgt->GetTitle().wx_str(), opt.wx_str()));
}
}
}
}
}
break;
case ProjectOptionsManipulatorDlg::eRemove:
{
wxString full_opt;
if ( m_Dlg->GetOptionActive(ProjectOptionsManipulatorDlg::eProject) )
{
if ( HasOption(prj->GetCompilerOptions(), opt, full_opt) )
prj->RemoveCompilerOption(full_opt);
}
if ( m_Dlg->GetOptionActive(ProjectOptionsManipulatorDlg::eTarget) )
{
for (int i=0; i<prj->GetBuildTargetsCount(); ++i)
{
ProjectBuildTarget* tgt = prj->GetBuildTarget(i);
if (tgt && HasOption(tgt->GetCompilerOptions(), opt, full_opt))
tgt->RemoveCompilerOption(opt);
}
}
}
break;
case ProjectOptionsManipulatorDlg::eAdd:
{
if ( m_Dlg->GetOptionActive(ProjectOptionsManipulatorDlg::eProject) )
{
if ( !HasOption(prj->GetCompilerOptions(), opt) )
prj->AddCompilerOption(opt);
}
if ( m_Dlg->GetOptionActive(ProjectOptionsManipulatorDlg::eTarget) )
{
for (int i=0; i<prj->GetBuildTargetsCount(); ++i)
{
ProjectBuildTarget* tgt = prj->GetBuildTarget(i);
if (tgt && !HasOption(tgt->GetCompilerOptions(), opt))
tgt->AddCompilerOption(opt);
}
}
}
break;
case ProjectOptionsManipulatorDlg::eReplace:
{
wxString full_opt;
if ( m_Dlg->GetOptionActive(ProjectOptionsManipulatorDlg::eProject) )
{
if ( HasOption(prj->GetCompilerOptions(), opt, full_opt) )
prj->ReplaceCompilerOption(full_opt, ManipulateOption(full_opt, opt, opt_new));
}
if ( m_Dlg->GetOptionActive(ProjectOptionsManipulatorDlg::eTarget) )
{
for (int i=0; i<prj->GetBuildTargetsCount(); ++i)
//.........这里部分代码省略.........