本文整理汇总了C++中ProjectBuildTarget类的典型用法代码示例。如果您正苦于以下问题:C++ ProjectBuildTarget类的具体用法?C++ ProjectBuildTarget怎么用?C++ ProjectBuildTarget使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了ProjectBuildTarget类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: XRCCTRL
void ProjectOptionsDlg::OnEditBuildTargetClick(wxCommandEvent& /*event*/)
{
wxListBox* lstTargets = XRCCTRL(*this, "lstBuildTarget", wxListBox);
int targetIdx = lstTargets->GetSelection();
ProjectBuildTarget* target = m_Project->GetBuildTarget(targetIdx);
if (!target)
{
cbMessageBox(_("Could not locate target..."),
_("Error"),
wxOK | wxICON_ERROR,
this);
return;
}
wxString oldTargetName = target->GetTitle();
wxString newTargetName = wxGetTextFromUser(_("Change the build target name:"),
_("Rename build target"),
oldTargetName);
if (newTargetName == oldTargetName || !ValidateTargetName(newTargetName))
return;
m_Project->RenameBuildTarget(targetIdx, newTargetName);
lstTargets->SetString(targetIdx, newTargetName);
lstTargets->SetSelection(targetIdx);
BuildScriptsTree();
CodeBlocksEvent e(cbEVT_PROJECT_TARGETS_MODIFIED);
e.SetProject(m_Project);
Manager::Get()->GetPluginManager()->NotifyPlugins(e);
}
示例2: if
bool MSVC10Loader::DoCreateConfigurations()
{
LogManager* pMsg = Manager::Get()->GetLogManager();
if (!pMsg) return false;
bool bResult = false;
// create the project targets
for (HashProjectsConfs::iterator it = m_pc.begin(); it != m_pc.end(); ++it)
{
ProjectBuildTarget* bt = m_pProject->AddBuildTarget(it->second.sName);
if (bt)
{
bt->SetCompilerID(m_pProject->GetCompilerID());
bt->AddPlatform(spAll); // target all platforms, SupportedPlatforms enum in "globals.h"
TargetType tt = ttExecutable;
if (it->second.TargetType == _T("Application")) tt = ttExecutable;
else if (it->second.TargetType == _T("Console")) tt = ttConsoleOnly;
else if (it->second.TargetType == _T("StaticLibrary")) tt = ttStaticLib;
else if (it->second.TargetType == _T("DynamicLibrary")) tt = ttDynamicLib;
else
pMsg->DebugLog(_("Import; Unsupported target type: ") + it->second.TargetType);
bt->SetTargetType(tt); // executable by default, TargetType enum in "globals.h"
it->second.bt = bt; // apply
pMsg->DebugLog(_("Created project build target: ") + it->second.sName);
bResult = true; // at least one config imported
}
}
return bResult;
}
示例3: 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
示例4: AddTargetFiles
void ThreadSearchThread::AddTargetFiles(wxSortedArrayString& sortedArrayString, ProjectBuildTarget& target)
{
// Adds target file paths to array only if they do not already exist.
// Same path may exist if we parse both open files and target files
// for examle.
for (FilesList::iterator it = target.GetFilesList().begin(); it != target.GetFilesList().end(); it++)
{
ProjectFile* pf = *it;
AddNewItem(sortedArrayString, pf->file.GetFullPath(), m_Masks);
if ( TestDestroy() == true ) return;
}
}
示例5: dlg
void ClassWizard::OnLaunch(cb_unused wxCommandEvent& event)
{
ProjectManager* prjMan = Manager::Get()->GetProjectManager();
cbProject* prj = prjMan->GetActiveProject();
ClassWizardDlg dlg(Manager::Get()->GetAppWindow());
PlaceWindow(&dlg);
if (dlg.ShowModal() == wxID_OK)
{
if (!prj)
{
cbMessageBox( _("The new class has been created."),
_("Information"),
wxOK | wxICON_INFORMATION,
Manager::Get()->GetAppWindow());
}
else if( cbMessageBox( _("The new class has been created.\n"
"Do you want to add it to the current project?"),
_("Add to project?"),
wxYES_NO | wxYES_DEFAULT | wxICON_QUESTION,
Manager::Get()->GetAppWindow()) == wxID_YES)
{
wxArrayInt targets;
prjMan->AddFileToProject(dlg.GetHeaderFilename(), prj, targets);
if ( (targets.GetCount() != 0) && (dlg.IsValidImplementationFilename()) )
prjMan->AddFileToProject(dlg.GetImplementationFilename(), prj, targets);
if (dlg.AddPathToProject())
{
// Add the include Path to the Build targets....
for (size_t i = 0; i < targets.GetCount(); ++i)
{
ProjectBuildTarget* buildTarget = prj->GetBuildTarget(targets[i]); // Get the top level build Target
if (buildTarget)
{
wxString include_dir = dlg.GetIncludeDir();
if (!include_dir.IsEmpty())
buildTarget->AddIncludeDir(include_dir);
}
else
{
wxString information;
information.Printf(_("Could not find build target ID = %i.\nThe include directory won't be added to this target. Please do it manually"), targets[i]);
cbMessageBox(information, _("Information"),
wxOK | wxICON_INFORMATION,
Manager::Get()->GetAppWindow());
}
}
}
prjMan->GetUI().RebuildTree();
}
}
}
示例6: OnProjectTypeChanged
void ProjectOptionsDlg::OnProjectTypeChanged(wxCommandEvent& /*event*/)
{
ProjectBuildTarget* target = m_Project->GetBuildTarget(m_Current_Sel);
if (!target)
return;
wxComboBox* cmb = XRCCTRL(*this, "cmbProjectType", wxComboBox);
wxCheckBox* chkCH = XRCCTRL(*this, "chkCreateHex", wxCheckBox);
wxTextCtrl* txt = XRCCTRL(*this, "txtOutputFilename", wxTextCtrl);
if (!cmb || !txt || !chkCH)
return;
// Default no hex file
target->SetCreateHex(false);
chkCH->SetValue(false);
switch((TargetType)cmb->GetSelection()) {
case ttExecutable :
chkCH->Enable(true);
break;
case ttLibrary :
chkCH->Enable(false);
break;
}
Compiler* compiler = CompilerFactory::GetCompiler(target->GetCompilerID());
wxFileName fname = target->GetOutputFilename();
wxString name = fname.GetName();
wxString ext = fname.GetExt();
wxString extI = fname.GetExt();
wxString extD = fname.GetExt();
wxString libext = compiler ? compiler->GetSwitches().libExtension : FileFilters::LIBRARY_EXT; // TODO: add specialized compiler option for this
wxString execext = compiler ? compiler->GetSwitches().execExtension : FileFilters::EXECUTABLE_EXT;
switch ((TargetType)cmb->GetSelection())
{
case ttExecutable:
fname.SetExt(execext);
txt->SetValue(fname.GetFullPath());
break;
case ttLibrary:
fname.SetExt(libext);
txt->SetValue(fname.GetFullPath());
break;
}
}
示例7: while
/** get project includes
* \param root : the root node of the XML project file (<Project >
**/
bool MSVC10Loader::GetProjectIncludes(const TiXmlElement* root)
{
if (!root) return false;
LogManager* pMsg = Manager::Get()->GetLogManager();
if (!pMsg) return false;
bool bResult = false;
// parse all global parameters
const TiXmlElement* prop = root->FirstChildElement("PropertyGroup");
while (prop)
{
const char* attr = prop->Attribute("Condition");
if (!attr) { prop = prop->NextSiblingElement(); continue; }
wxString conf = cbC2U(attr);
for (size_t i=0; i<m_pcNames.Count(); ++i)
{
wxString sName = m_pcNames.Item(i);
wxString sConf = SubstituteConfigMacros(conf);
if (sConf.IsSameAs(sName))
{
const TiXmlElement* cinc = prop->FirstChildElement("IncludePath");
wxArrayString cdirs = GetDirectories(cinc);
for (size_t j=0; j<cdirs.Count(); ++j)
{
ProjectBuildTarget* bt = m_pc[sName].bt;
if (bt) bt->AddIncludeDir(cdirs.Item(j));
}
const TiXmlElement* linc = prop->FirstChildElement("LibraryPath");
wxArrayString ldirs = GetDirectories(linc);
for (size_t j=0; j<ldirs.Count(); ++j)
{
ProjectBuildTarget* bt = m_pc[sName].bt;
if (bt) bt->AddLibDir(ldirs.Item(j));
}
bResult = true; // got something
}
}
prop = prop->NextSiblingElement();
}
if (!bResult)
pMsg->DebugLog(_("Failed to find any includes in the project...?!"));
return bResult;
}
示例8: cbC2U
bool MSVC10Loader::GetProjectIncludes(const TiXmlElement* root)
{
if (!root) return false;
LogManager* pMsg = Manager::Get()->GetLogManager();
if (!pMsg) return false;
bool bResult = false;
// parse all global parameters
const TiXmlElement* prop = root->FirstChildElement("PropertyGroup");
for (; prop; prop=prop->NextSiblingElement("PropertyGroup"))
{
const char* attr = prop->Attribute("Condition");
if (!attr) continue;
wxString conf = cbC2U(attr);
for (HashProjectsConfs::iterator it=m_pc.begin(); it!=m_pc.end(); ++it)
{
wxString sName = it->second.sName;
wxString sConf = SubstituteConfigMacros(conf);
if (sConf.IsSameAs(sName))
{
// $(VCInstallDir)include , $(VCInstallDir)atlmfc\include , $(WindowsSdkDir)include , $(FrameworkSDKDir)\include
const TiXmlElement* cinc = prop->FirstChildElement("IncludePath");
wxArrayString cdirs = GetArrayPaths(cinc, m_pc[sName]);
for (size_t j=0; j<cdirs.Count(); ++j)
{
ProjectBuildTarget* bt = m_pc[sName].bt;
if (bt) bt->AddIncludeDir(cdirs.Item(j));
}
// $(VCInstallDir)lib , $(VCInstallDir)atlmfc\lib , $(WindowsSdkDir)lib , $(FrameworkSDKDir)\lib
const TiXmlElement* linc = prop->FirstChildElement("LibraryPath");
wxArrayString ldirs = GetArrayPaths(linc, m_pc[sName]);
for (size_t j=0; j<ldirs.Count(); ++j)
{
ProjectBuildTarget* bt = m_pc[sName].bt;
if (bt) bt->AddLibDir(ldirs.Item(j));
}
bResult = true; // got something
}
}
}
if (!bResult)
pMsg->DebugLog(_("Failed to find any includes in the project...?!"));
return bResult;
}
示例9: GetTargetCompileCommands
wxArrayString DirectCommands::GetCompileCommands(ProjectBuildTarget* target, bool force)
{
wxArrayString ret;
if (target)
ret = GetTargetCompileCommands(target, force);
else
{
for (int x = 0; x < m_pProject->GetBuildTargetsCount(); ++x)
{
ProjectBuildTarget* bt = m_pProject->GetBuildTarget(x);
if (bt->GetIncludeInTargetAll()) // only if target gets build with "all"
{
wxArrayString targetcompile = GetTargetCompileCommands(bt, force);
AppendArray(targetcompile, ret);
}
}
}
return ret;
}
示例10: fname
int ProjectManager::DoAddFileToProject(const wxString& filename, cbProject* project, wxArrayInt& targets)
{
if (!project)
return 0;
// do we have to ask for target?
if (targets.GetCount() == 0)
{
// if project has only one target, use this
if (project->GetBuildTargetsCount() == 1)
targets.Add(0);
// else display multiple target selection dialog
else
{
targets = m_ui->AskForMultiBuildTargetIndex(project);
if (targets.GetCount() == 0)
return 0;
}
}
// make sure filename is relative to project path
wxFileName fname(filename);
fname.Normalize(wxPATH_NORM_DOTS | wxPATH_NORM_ABSOLUTE, project->GetBasePath());
fname.MakeRelativeTo(project->GetBasePath());
// add the file to the first selected target
ProjectFile* pf = project->AddFile(targets[0], fname.GetFullPath());
if (pf)
{
// if the file was added successfully,
// add to this file the rest of the selected targets...
for (size_t i = 0; i < targets.GetCount(); ++i)
{
ProjectBuildTarget* target = project->GetBuildTarget(targets[i]);
if (target)
pf->AddBuildTarget(target->GetTitle());
}
}
return targets.GetCount();
}
示例11: while
bool MSVC7Loader::DoImportFiles(TiXmlElement* root, int numConfigurations)
{
if (!root)
return false;
TiXmlElement* files = root->FirstChildElement("Files");
if (!files)
files = root; // might not have "Files" section
while (files)
{
TiXmlElement* file = files->FirstChildElement("File");
while (file)
{
wxString fname = ReplaceMSVCMacros(cbC2U(file->Attribute("RelativePath")));
TiXmlElement* conf = file->FirstChildElement("FileConfiguration");
for (; conf; conf=conf->NextSiblingElement("FileConfiguration"))
{
// find the target to which it applies
wxString sTargetName = cbC2U(conf->Attribute("Name"));
sTargetName.Replace(_T("|"), _T(" "), true);
ProjectBuildTarget* bt = m_pProject->GetBuildTarget(sTargetName);
TiXmlElement* tool = conf->FirstChildElement("Tool");
for (; tool; tool=tool->NextSiblingElement("Tool"))
{
// get additional include directories
wxString sAdditionalInclude;
sAdditionalInclude = cbC2U(tool->Attribute("AdditionalIncludeDirectories"));
if (sAdditionalInclude.Len() > 0)
{
// we have to add the additionnal include directories.
// parse the different include directories (comma separated)
int iStart;
int iCommaPosition;
iStart = 0;
iCommaPosition = sAdditionalInclude.Find(_T(","));
do
{
int iEnd;
if (iCommaPosition != wxNOT_FOUND)
{
iEnd = iCommaPosition - 1;
if (iEnd < iStart) iEnd = iStart;
}
else
iEnd = sAdditionalInclude.Len() - 1;
wxString sInclude = sAdditionalInclude.Mid(iStart, iEnd - iStart + 1);
if (bt)
bt->AddIncludeDir(sInclude);
// remove the directory from the include list
sAdditionalInclude = sAdditionalInclude.Mid(iEnd + 2);
iCommaPosition = sAdditionalInclude.Find(_T(","));
}
while (sAdditionalInclude.Len() > 0);
}
}
}
if ((!fname.IsEmpty()) && (fname != _T(".\\")))
{
if (fname.StartsWith(_T(".\\")))
fname.erase(0, 2);
if (!platform::windows)
fname.Replace(_T("\\"), _T("/"), true);
ProjectFile* pf = m_pProject->AddFile(0, fname);
if (pf)
{
// add it to all configurations, not just the first
for (int i = 1; i < numConfigurations; ++i)
{
pf->AddBuildTarget(m_pProject->GetBuildTarget(i)->GetTitle());
HandleFileConfiguration(file, pf); // We need to do this for all files
}
}
}
file = file->NextSiblingElement("File");
}
// recurse for nested filters
TiXmlElement* nested = files->FirstChildElement("Filter");
while (nested)
{
DoImportFiles(nested, numConfigurations);
nested = nested->NextSiblingElement("Filter");
}
files = files->NextSiblingElement("Files");
}
// recurse for nested filters
TiXmlElement* nested = root->FirstChildElement("Filter");
while (nested)
{
DoImportFiles(nested, numConfigurations);
//.........这里部分代码省略.........
示例12: _T
//{ 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);
}
示例13: ClearProjectKeys
void MacrosManager::RecalcVars(cbProject* project, EditorBase* editor, ProjectBuildTarget* target)
{
m_ActiveEditorFilename = wxEmptyString; // invalidate
m_ActiveEditorLine = -1; // invalidate
m_ActiveEditorColumn = -1; // invalidate
if (editor)
{
// don't use pointer to editor here, because this might be the same,
// even after closing one file and opening a new one
if (editor->GetFilename() != m_ActiveEditorFilename)
m_ActiveEditorFilename = editor->GetFilename();
// (re-) compute column and line but only in case it's a builtin-editor
if (editor->IsBuiltinEditor())
{
cbEditor* cbEd = static_cast<cbEditor*>(editor);
cbStyledTextCtrl* cbSTC = cbEd->GetControl();
if (cbSTC)
{
m_ActiveEditorLine = cbSTC->GetCurrentLine() + 1;
int pos = cbSTC->GetCurrentPos();
if (pos!=-1)
m_ActiveEditorColumn = cbSTC->GetColumn(pos) + 1;
}
}
}
if (!project)
{
// Manager::Get()->GetLogManager()->DebugLog("project == 0");
m_ProjectFilename = wxEmptyString;
m_ProjectName = wxEmptyString;
m_ProjectDir = wxEmptyString;
m_ProjectFiles = wxEmptyString;
m_Makefile = wxEmptyString;
m_LastProject = 0;
ClearProjectKeys();
m_Macros[_T("PROJECTFILE")] = wxEmptyString;
m_Macros[_T("PROJECT_FILE")] = wxEmptyString;
m_Macros[_T("PROJECTFILENAME")] = wxEmptyString;
m_Macros[_T("PROJECT_FILENAME")] = wxEmptyString;
m_Macros[_T("PROJECT_FILE_NAME")] = wxEmptyString;
m_Macros[_T("PROJECTNAME")] = wxEmptyString;
m_Macros[_T("PROJECT_NAME")] = wxEmptyString;
m_Macros[_T("PROJECTDIR")] = wxEmptyString;
m_Macros[_T("PROJECT_DIR")] = wxEmptyString;
m_Macros[_T("PROJECTDIRECTORY")] = wxEmptyString;
m_Macros[_T("PROJECT_DIRECTORY")] = wxEmptyString;
m_Macros[_T("PROJECTTOPDIR")] = wxEmptyString;
m_Macros[_T("PROJECT_TOPDIR")] = wxEmptyString;
m_Macros[_T("PROJECTTOPDIRECTORY")] = wxEmptyString;
m_Macros[_T("PROJECT_TOPDIRECTORY")] = wxEmptyString;
m_Macros[_T("MAKEFILE")] = wxEmptyString;
m_Macros[_T("ALL_PROJECT_FILES")] = wxEmptyString;
}
else if (project != m_LastProject)
{
// Manager::Get()->GetLogManager()->DebugLog("project != m_LastProject");
m_LastTarget = 0; // reset last target when project changes
m_ProjectWxFileName.Assign(project->GetFilename());
m_ProjectFilename = UnixFilename(m_ProjectWxFileName.GetFullName());
m_ProjectName = project->GetTitle();
m_ProjectDir = UnixFilename(project->GetBasePath());
m_ProjectTopDir = UnixFilename(project->GetCommonTopLevelPath());
m_Makefile = UnixFilename(project->GetMakefile());
m_ProjectFiles = wxEmptyString;
for (int i = 0; i < project->GetFilesCount(); ++i)
{
// quote filenames, if they contain spaces
wxString out = UnixFilename(project->GetFile(i)->relativeFilename);
QuoteStringIfNeeded(out);
m_ProjectFiles << out << _T(' ');
}
ClearProjectKeys();
m_Macros[_T("PROJECTFILE")] = m_ProjectFilename;
m_Macros[_T("PROJECT_FILE")] = m_ProjectFilename;
m_Macros[_T("PROJECTFILENAME")] = m_ProjectFilename;
m_Macros[_T("PROJECT_FILENAME")] = m_ProjectFilename;
m_Macros[_T("PROJECT_FILE_NAME")] = m_ProjectFilename;
m_Macros[_T("PROJECTNAME")] = m_ProjectName;
m_Macros[_T("PROJECT_NAME")] = m_ProjectName;
m_Macros[_T("PROJECTDIR")] = m_ProjectDir;
m_Macros[_T("PROJECT_DIR")] = m_ProjectDir;
m_Macros[_T("PROJECTDIRECTORY")] = m_ProjectDir;
m_Macros[_T("PROJECT_DIRECTORY")] = m_ProjectDir;
m_Macros[_T("PROJECTTOPDIR")] = m_ProjectTopDir;
m_Macros[_T("PROJECT_TOPDIR")] = m_ProjectTopDir;
m_Macros[_T("PROJECTTOPDIRECTORY")] = m_ProjectTopDir;
m_Macros[_T("PROJECT_TOPDIRECTORY")] = m_ProjectTopDir;
m_Macros[_T("MAKEFILE")] = m_Makefile;
m_Macros[_T("ALL_PROJECT_FILES")] = m_ProjectFiles;
for (int i = 0; i < project->GetBuildTargetsCount(); ++i)
{
ProjectBuildTarget* target = project->GetBuildTarget(i);
if (!target)
continue;
wxString title = target->GetTitle().Upper();
//.........这里部分代码省略.........
示例14: FindTargetsDebugger
void DebuggerManager::FindTargetsDebugger()
{
if (Manager::Get()->GetProjectManager()->IsLoadingOrClosing())
return;
m_activeDebugger = nullptr;
m_menuHandler->SetActiveDebugger(nullptr);
if (m_registered.empty())
{
m_menuHandler->MarkActiveTargetAsValid(false);
return;
}
ProjectManager* projectMgr = Manager::Get()->GetProjectManager();
LogManager* log = Manager::Get()->GetLogManager();
cbProject* project = projectMgr->GetActiveProject();
ProjectBuildTarget *target = nullptr;
if (project)
{
const wxString &targetName = project->GetActiveBuildTarget();
if (project->BuildTargetValid(targetName))
target = project->GetBuildTarget(targetName);
}
Compiler *compiler = nullptr;
if (!target)
{
if (project)
compiler = CompilerFactory::GetCompiler(project->GetCompilerID());
if (!compiler)
compiler = CompilerFactory::GetDefaultCompiler();
if (!compiler)
{
log->LogError(_("Can't get the compiler for the active target, nor the project, nor the default one!"));
m_menuHandler->MarkActiveTargetAsValid(false);
return;
}
}
else
{
compiler = CompilerFactory::GetCompiler(target->GetCompilerID());
if (!compiler)
{
log->LogError(wxString::Format(_("Current target '%s' doesn't have valid compiler!"),
target->GetTitle().c_str()));
m_menuHandler->MarkActiveTargetAsValid(false);
return;
}
}
wxString dbgString = compiler->GetPrograms().DBGconfig;
wxString::size_type pos = dbgString.find(wxT(':'));
wxString name, config;
if (pos != wxString::npos)
{
name = dbgString.substr(0, pos);
config = dbgString.substr(pos + 1, dbgString.length() - pos - 1);
}
if (name.empty() || config.empty())
{
log->LogError(wxString::Format(_("Current compiler '%s' doesn't have correctly defined debugger!"),
compiler->GetName().c_str()));
m_menuHandler->MarkActiveTargetAsValid(false);
return;
}
for (RegisteredPlugins::iterator it = m_registered.begin(); it != m_registered.end(); ++it)
{
PluginData &data = it->second;
if (it->first->GetSettingsName() == name)
{
ConfigurationVector &configs = data.GetConfigurations();
int index = 0;
for (ConfigurationVector::iterator itConf = configs.begin(); itConf != configs.end(); ++itConf, ++index)
{
if ((*itConf)->GetName() == config)
{
m_activeDebugger = it->first;
m_activeDebugger->SetActiveConfig(index);
m_useTargetsDefault = true;
WriteActiveDebuggerConfig(wxEmptyString, -1);
RefreshUI();
m_menuHandler->MarkActiveTargetAsValid(true);
return;
}
}
}
}
wxString targetTitle(target ? target->GetTitle() : wxT("<nullptr>"));
log->LogError(wxString::Format(_("Can't find the debugger config: '%s:%s' for the current target '%s'!"),
name.c_str(), config.c_str(),
targetTitle.c_str()));
m_menuHandler->MarkActiveTargetAsValid(false);
}
示例15: switch
void ProjectOptionsManipulator::ProcessLinkerLibs(cbProject* prj, const wxString& lib, const wxString& lib_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->GetLinkLibs(), lib);
if (has_opt && scan_opt==ProjectOptionsManipulatorDlg::eSearch)
{
result.Add(wxString::Format(_("Project '%s': Contains linker lib '%s'."),
prj->GetTitle().wx_str(), lib.wx_str()));
}
else if (!has_opt && scan_opt==ProjectOptionsManipulatorDlg::eSearchNot)
{
result.Add(wxString::Format(_("Project '%s': Does not contain linker lib '%s'."),
prj->GetTitle().wx_str(), lib.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->GetLinkLibs(), lib);
if (has_opt && scan_opt==ProjectOptionsManipulatorDlg::eSearch)
{
result.Add(wxString::Format(_("Project '%s', target '%s': Contains linker lib '%s'."),
prj->GetTitle().wx_str(), tgt->GetTitle().wx_str(), lib.wx_str()));
}
else if (!has_opt && scan_opt==ProjectOptionsManipulatorDlg::eSearchNot)
{
result.Add(wxString::Format(_("Project '%s', target '%s': Does not contain linker lib '%s'."),
prj->GetTitle().wx_str(), tgt->GetTitle().wx_str(), lib.wx_str()));
}
}
}
}
}
break;
case ProjectOptionsManipulatorDlg::eRemove:
{
wxString full_lib;
if ( m_Dlg->GetOptionActive(ProjectOptionsManipulatorDlg::eProject) )
{
if ( HasOption(prj->GetLinkLibs(), lib, full_lib) )
prj->RemoveLinkLib(full_lib);
}
if ( m_Dlg->GetOptionActive(ProjectOptionsManipulatorDlg::eTarget) )
{
for (int i=0; i<prj->GetBuildTargetsCount(); ++i)
{
ProjectBuildTarget* tgt = prj->GetBuildTarget(i);
if (tgt && HasOption(tgt->GetLinkLibs(), lib, full_lib))
tgt->RemoveLinkLib(lib);
}
}
}
break;
case ProjectOptionsManipulatorDlg::eAdd:
{
if ( m_Dlg->GetOptionActive(ProjectOptionsManipulatorDlg::eProject) )
{
if ( !HasOption(prj->GetLinkLibs(), lib) )
prj->AddLinkLib(lib);
}
if ( m_Dlg->GetOptionActive(ProjectOptionsManipulatorDlg::eTarget) )
{
for (int i=0; i<prj->GetBuildTargetsCount(); ++i)
{
ProjectBuildTarget* tgt = prj->GetBuildTarget(i);
if (tgt && !HasOption(tgt->GetLinkLibs(), lib))
tgt->AddLinkLib(lib);
}
}
}
break;
case ProjectOptionsManipulatorDlg::eReplace:
{
wxString full_lib;
if ( m_Dlg->GetOptionActive(ProjectOptionsManipulatorDlg::eProject) )
{
if ( HasOption(prj->GetLinkLibs(), lib, full_lib) )
prj->ReplaceLinkLib(full_lib, ManipulateOption(full_lib, lib, lib_new));
}
if ( m_Dlg->GetOptionActive(ProjectOptionsManipulatorDlg::eTarget) )
{
for (int i=0; i<prj->GetBuildTargetsCount(); ++i)
//.........这里部分代码省略.........