本文整理汇总了C++中ProjectBuildTarget::GetIncludeDirs方法的典型用法代码示例。如果您正苦于以下问题:C++ ProjectBuildTarget::GetIncludeDirs方法的具体用法?C++ ProjectBuildTarget::GetIncludeDirs怎么用?C++ ProjectBuildTarget::GetIncludeDirs使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ProjectBuildTarget
的用法示例。
在下文中一共展示了ProjectBuildTarget::GetIncludeDirs方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: 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);
}
示例2: GetSourceOf
wxString ClangPlugin::GetSourceOf(cbEditor* ed)
{
cbProject* project = nullptr;
ProjectFile* opf = ed->GetProjectFile();
if (opf)
project = opf->GetParentProject();
if (!project)
project = Manager::Get()->GetProjectManager()->GetActiveProject();
wxFileName theFile(ed->GetFilename());
wxFileName candidateFile;
bool isCandidate;
wxArrayString fileArray;
wxDir::GetAllFiles(theFile.GetPath(wxPATH_GET_VOLUME), &fileArray,
theFile.GetName() + wxT(".*"), wxDIR_FILES | wxDIR_HIDDEN);
wxFileName currentCandidateFile = FindSourceIn(fileArray, theFile, isCandidate);
if (isCandidate)
candidateFile = currentCandidateFile;
else if (currentCandidateFile.IsOk())
return currentCandidateFile.GetFullPath();
fileArray.Clear();
EditorManager* edMgr = Manager::Get()->GetEditorManager();
for (int i = 0; i < edMgr->GetEditorsCount(); ++i)
{
cbEditor* edit = edMgr->GetBuiltinEditor(i);
if (!edit)
continue;
ProjectFile* pf = edit->GetProjectFile();
if (!pf)
continue;
fileArray.Add(pf->file.GetFullPath());
}
currentCandidateFile = FindSourceIn(fileArray, theFile, isCandidate);
if (!isCandidate && currentCandidateFile.IsOk())
return currentCandidateFile.GetFullPath();
if (project)
{
fileArray.Clear();
for (FilesList::const_iterator it = project->GetFilesList().begin();
it != project->GetFilesList().end(); ++it)
{
ProjectFile* pf = *it;
if (!pf)
continue;
fileArray.Add(pf->file.GetFullPath());
}
currentCandidateFile = FindSourceIn(fileArray, theFile, isCandidate);
if (isCandidate && !candidateFile.IsOk())
candidateFile = currentCandidateFile;
else if (currentCandidateFile.IsOk())
return currentCandidateFile.GetFullPath();
wxArrayString dirs = project->GetIncludeDirs();
for (int i = 0; i < project->GetBuildTargetsCount(); ++i)
{
ProjectBuildTarget* target = project->GetBuildTarget(i);
if (target)
{
for (size_t ti = 0; ti < target->GetIncludeDirs().GetCount(); ++ti)
{
wxString dir = target->GetIncludeDirs()[ti];
if (dirs.Index(dir) == wxNOT_FOUND)
dirs.Add(dir);
}
}
}
for (size_t i = 0; i < dirs.GetCount(); ++i)
{
wxString dir = dirs[i];
Manager::Get()->GetMacrosManager()->ReplaceMacros(dir);
wxFileName dname(dir);
if (!dname.IsAbsolute())
dname.Normalize(wxPATH_NORM_ALL & ~wxPATH_NORM_CASE, project->GetBasePath());
fileArray.Clear();
wxDir::GetAllFiles(dname.GetPath(), &fileArray, theFile.GetName() + wxT(".*"), wxDIR_FILES | wxDIR_HIDDEN);
currentCandidateFile = FindSourceIn(fileArray, theFile, isCandidate);
if (isCandidate)
candidateFile = currentCandidateFile;
else if (currentCandidateFile.IsOk())
return currentCandidateFile.GetFullPath();
}
}
if (candidateFile.IsOk())
return candidateFile.GetFullPath();
return wxEmptyString;
}
示例3: ProcessCompilerPaths
void ProjectOptionsManipulator::ProcessCompilerPaths(cbProject* prj, const wxString& path, const wxString& path_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->GetIncludeDirs(), path);
if (has_opt && scan_opt==ProjectOptionsManipulatorDlg::eSearch)
{
result.Add(wxString::Format(_("Project '%s': Contains compiler path '%s'."),
prj->GetTitle().wx_str(), path.wx_str()));
}
else if (!has_opt && scan_opt==ProjectOptionsManipulatorDlg::eSearchNot)
{
result.Add(wxString::Format(_("Project '%s': Does not contain compiler path '%s'."),
prj->GetTitle().wx_str(), path.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->GetIncludeDirs(), path);
if (has_opt && scan_opt==ProjectOptionsManipulatorDlg::eSearch)
{
result.Add(wxString::Format(_("Project '%s', target '%s': Contains compiler path '%s'."),
prj->GetTitle().wx_str(), tgt->GetTitle().wx_str(), path.wx_str()));
}
else if (!has_opt && scan_opt==ProjectOptionsManipulatorDlg::eSearchNot)
{
result.Add(wxString::Format(_("Project '%s', target '%s': Does not contain compiler path '%s'."),
prj->GetTitle().wx_str(), tgt->GetTitle().wx_str(), path.wx_str()));
}
}
}
}
}
break;
case ProjectOptionsManipulatorDlg::eRemove:
{
wxString full_path;
if ( m_Dlg->GetOptionActive(ProjectOptionsManipulatorDlg::eProject) )
{
if ( HasOption(prj->GetIncludeDirs(), path, full_path) )
prj->RemoveIncludeDir(full_path);
}
if ( m_Dlg->GetOptionActive(ProjectOptionsManipulatorDlg::eTarget) )
{
for (int i=0; i<prj->GetBuildTargetsCount(); ++i)
{
ProjectBuildTarget* tgt = prj->GetBuildTarget(i);
if (tgt && HasOption(tgt->GetIncludeDirs(), path, full_path))
tgt->RemoveIncludeDir(path);
}
}
}
break;
case ProjectOptionsManipulatorDlg::eAdd:
{
if ( m_Dlg->GetOptionActive(ProjectOptionsManipulatorDlg::eProject) )
{
if ( !HasOption(prj->GetIncludeDirs(), path) )
prj->AddIncludeDir(path);
}
if ( m_Dlg->GetOptionActive(ProjectOptionsManipulatorDlg::eTarget) )
{
for (int i=0; i<prj->GetBuildTargetsCount(); ++i)
{
ProjectBuildTarget* tgt = prj->GetBuildTarget(i);
if (tgt && !HasOption(tgt->GetIncludeDirs(), path))
tgt->AddIncludeDir(path);
}
}
}
break;
case ProjectOptionsManipulatorDlg::eReplace:
{
wxString full_path;
if ( m_Dlg->GetOptionActive(ProjectOptionsManipulatorDlg::eProject) )
{
if ( HasOption(prj->GetIncludeDirs(), path, full_path) )
prj->ReplaceIncludeDir(full_path, ManipulateOption(full_path, path, path_new));
}
if ( m_Dlg->GetOptionActive(ProjectOptionsManipulatorDlg::eTarget) )
{
for (int i=0; i<prj->GetBuildTargetsCount(); ++i)
//.........这里部分代码省略.........