本文整理汇总了C++中ProjectBuildTarget::AddLinkLib方法的典型用法代码示例。如果您正苦于以下问题:C++ ProjectBuildTarget::AddLinkLib方法的具体用法?C++ ProjectBuildTarget::AddLinkLib怎么用?C++ ProjectBuildTarget::AddLinkLib使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ProjectBuildTarget
的用法示例。
在下文中一共展示了ProjectBuildTarget::AddLinkLib方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: while
/** get target specific stuff
* \param root : the root node of the XML project file (<Project >
**/
bool MSVC10Loader::GetTargetSpecific(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* idef = root->FirstChildElement("ItemDefinitionGroup");
while (idef)
{
const char* attr = idef->Attribute("Condition");
if (!attr) { idef = idef->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* comp = idef->FirstChildElement("ClCompile");
if (comp)
{
const TiXmlElement* pp = comp->FirstChildElement("PreprocessorDefinitions");
wxArrayString pps = GetPreprocessors(pp);
for (size_t j=0; j<pps.Count(); ++j)
{
ProjectBuildTarget* bt = m_pc[sName].bt;
if (bt) bt->AddCompilerOption((m_ConvertSwitches ? _T("-D") : _T("/D")) + pps.Item(j));
}
const TiXmlElement* cinc = comp->FirstChildElement("AdditionalIncludeDirectories");
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* copt = comp->FirstChildElement("AdditionalOptions");
wxArrayString copts = GetOptions(copt);
for (size_t j=0; j<copts.Count(); ++j)
{
ProjectBuildTarget* bt = m_pc[sName].bt;
if (bt && !m_ConvertSwitches) bt->AddCompilerOption(copts.Item(j));
}
}
const TiXmlElement* link = idef->FirstChildElement("Link");
if (link)
{
const TiXmlElement* llib = link->FirstChildElement("AdditionalDependencies");
wxArrayString libs = GetLibs(llib);
for (size_t j=0; j<libs.Count(); ++j)
{
ProjectBuildTarget* bt = m_pc[sName].bt;
if (bt) bt->AddLinkLib(libs.Item(j));
}
const TiXmlElement* linc = link->FirstChildElement("AdditionalLibraryDirectories");
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));
}
const TiXmlElement* lopt = comp->FirstChildElement("AdditionalOptions");
wxArrayString lopts = GetOptions(lopt);
for (size_t j=0; j<lopts.Count(); ++j)
{
ProjectBuildTarget* bt = m_pc[sName].bt;
if (bt && !m_ConvertSwitches) bt->AddLinkerOption(lopts.Item(j));
}
const TiXmlElement* debug = link->FirstChildElement("GenerateDebugInformation");
wxString sDebug = GetText(debug);
if (sDebug.MakeUpper().IsSameAs(_T("TRUE")))
{
ProjectBuildTarget* bt = m_pc[sName].bt;
if (bt && !m_ConvertSwitches) bt->AddLinkerOption(_T("/debug"));
}
}
const TiXmlElement* res = idef->FirstChildElement("ResourceCompile");
if (res)
{
const TiXmlElement* pp = res->FirstChildElement("PreprocessorDefinitions");
wxArrayString pps = GetPreprocessors(pp);
for (size_t j=0; j<pps.Count(); ++j)
{
ProjectBuildTarget* bt = m_pc[sName].bt;
if (bt) bt->AddCompilerOption((m_ConvertSwitches ? _T("-D") : _T("/D")) + pps.Item(j));
}
//.........这里部分代码省略.........
示例2: ProcessLinkerLibs
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)
//.........这里部分代码省略.........
示例3: if
//.........这里部分代码省略.........
const TiXmlElement* cinc = res->FirstChildElement("AdditionalIncludeDirectories");
wxArrayString cdirs = GetArrayPaths(cinc,m_pc[sName]);
for (size_t j=0; j<cdirs.Count(); ++j)
bt->AddResourceIncludeDir(cdirs.Item(j));
const TiXmlElement* copt = res->FirstChildElement("AdditionalOptions");
wxArrayString copts = GetArray(copt,_T(" "));
if (!m_ConvertSwitches)
{
for (size_t j=0; j<copts.Count(); ++j)
bt->AddCompilerOption(copts.Item(j));
}
}
const TiXmlElement* link = idef->FirstChildElement("Link");
if (link)
{
const TiXmlElement* copt;
if ((copt=link->FirstChildElement("OutputFile")))
{
wxString val = GetText(copt);
ReplaceConfigMacros(m_pc[sName],val);
if (!val.IsEmpty())
bt->SetOutputFilename(val);
}
if ((copt=link->FirstChildElement("ModuleDefinitionFile")))
{
wxString val = GetText(copt);
ReplaceConfigMacros(m_pc[sName],val);
if (!val.IsEmpty())
bt->SetDefinitionFileFilename(val);
}
if ((copt=link->FirstChildElement("ImportLibrary")))
{
wxString val=GetText(copt);
ReplaceConfigMacros(m_pc[sName],val);
if (!val.IsEmpty())
bt->SetImportLibraryFilename(val);
}
copt = link->FirstChildElement("AdditionalDependencies");
wxArrayString libs = GetLibs(copt);
for (size_t j=0; j<libs.Count(); ++j)
bt->AddLinkLib(libs.Item(j));
copt = link->FirstChildElement("AdditionalLibraryDirectories"); /// @note : maybe use loops on all elements
for (; copt; copt=copt->NextSiblingElement("AdditionalLibraryDirectories"))
{
wxArrayString ldirs = GetArrayPaths(copt,m_pc[sName]);
for (size_t j=0; j<ldirs.Count(); ++j)
bt->AddLibDir(ldirs.Item(j));
}
if (!m_ConvertSwitches)
{
copt = link->FirstChildElement("AdditionalOptions");
wxArrayString lopts = GetArray(copt,_T(" "));
for (size_t j=0; j<lopts.Count(); ++j)
bt->AddLinkerOption(lopts.Item(j));
copt = link->FirstChildElement("GenerateDebugInformation");
wxString sDebug = GetText(copt);
if (sDebug.IsSameAs(_T("true"),false))
bt->AddLinkerOption(_T("/debug"));
}
}
const TiXmlElement* event;
if ((event=idef->FirstChildElement("PreBuildEvent")))
{
const TiXmlElement* copt=event->FirstChildElement("Command");
for (; copt; copt=copt->NextSiblingElement("Command"))
{
wxString cmd = UnixFilename(GetText(copt));
ReplaceConfigMacros(m_pc[sName],cmd);
if (!cmd.IsEmpty()) bt->AddCommandsBeforeBuild(cmd);
}
}
if ((event=idef->FirstChildElement("PostBuildEvent")))
{
const TiXmlElement* copt = event->FirstChildElement("Command");
for (; copt; copt=copt->NextSiblingElement("Command"))
{
wxString cmd=UnixFilename(GetText(copt));
ReplaceConfigMacros(m_pc[sName],cmd);
if (!cmd.IsEmpty()) bt->AddCommandsAfterBuild(cmd);
}
}
bResult = true; // got something
}
}
}
if (!bResult)
pMsg->DebugLog(_("Failed to find any includes in the project...?!"));
return bResult;
}
示例4: if
//.........这里部分代码省略.........
{
tmp = tool->Attribute("SuppressStartupBanner");
if (tmp.IsSameAs("TRUE"))
bt->AddLinkerOption("/nologo");
}
#endif
tmp = cbC2U(tool->Attribute("GenerateDebugInformation"));
if (tmp.IsSameAs(_T("TRUE")))
{
//bt->AddCompilerOption(m_ConvertSwitches ? "-g" : "/Zi"); // no !
if (!m_ConvertSwitches)
bt->AddLinkerOption(_T("/debug"));
}
// other options: /MACHINE:I386, /INCREMENTAL:YES, /STACK:10000000
if (!m_ConvertSwitches)
{
arr = GetArrayFromString(ReplaceMSVCMacros(cbC2U(tool->Attribute("AdditionalOptions"))), _T(" "));
for (unsigned int i = 0; i < arr.GetCount(); ++i) bt->AddLinkerOption(arr[i]);
}
// else ignore all options
tmp = ReplaceMSVCMacros(cbC2U(tool->Attribute("AdditionalDependencies")));
arr = GetArrayFromString(tmp, _T(" "));
for (unsigned int i = 0; i < arr.GetCount(); ++i)
{
tmp = arr[i];
if (tmp.Right(4).CmpNoCase(_T(".lib")) == 0)
tmp.Remove(tmp.Length() - 4);
if ((tmp == _T("/dll")) || (tmp == _T("/DLL")))
bt->AddLinkerOption(_T("--dll"));
else
bt->AddLinkLib(tmp);
}
if (!m_ConvertSwitches)
{
tmp = cbC2U(tool->Attribute("LinkIncremental"));
if (tmp.IsSameAs(_T("1"))) // 1 -> no, default is yes
bt->AddLinkerOption(_T("/INCREMENTAL:NO"));
}
if (!m_ConvertSwitches)
{
tmp = ReplaceMSVCMacros(cbC2U(tool->Attribute("ProgramDatabaseFile")));
if (!tmp.IsEmpty())
bt->AddLinkerOption(wxString(_T("/pdb:")) + UnixFilename(tmp));
}
if (!m_ConvertSwitches)
{
tmp = ReplaceMSVCMacros(cbC2U(tool->Attribute("ModuleDefinitionFile")));
if (!tmp.IsEmpty())
bt->AddLinkerOption(_T("/DEF:\"") + tmp + _T("\""));
}
}
else if (strcmp(tool->Attribute("Name"), "VCCLCompilerTool") == 0)
{
unsigned int i;
wxString tmp;
wxArrayString arr;
// compiler
tmp = cbC2U(tool->Attribute("AdditionalIncludeDirectories"));
// vc70 uses ";" while vc71 uses "," separators
示例5: updateProjects
//.........这里部分代码省略.........
proj = projIt->second;
#if wxCHECK_VERSION(2, 9, 0)
Manager::Get()->GetLogManager()->DebugLog(F(_T("Project %s, %d dependencies"), proj._project->GetTitle().wx_str(), proj._dependencyList.GetCount()));
#else
Manager::Get()->GetLogManager()->DebugLog(F(_T("Project %s, %d dependencies"), proj._project->GetTitle().c_str(), proj._dependencyList.GetCount()));
#endif
for (i=0; i<proj._dependencyList.GetCount(); ++i) {
depIt = _projects.find(proj._dependencyList[i]);
if ( depIt != _projects.end()) { // dependency found
dep = depIt->second;
Manager::Get()->GetProjectManager()->AddProjectDependency(proj._project, dep._project);
// match target configurations
for (j=0; j<_workspaceConfigurations.GetCount(); ++j) {
ConfigurationMatchings::iterator configIt;
wxString wconfig;
wxString pconfig;
targetProj = 0;
targetDep = 0;
if (proj._configurations.empty()) { // msvc6
wconfig = _workspaceConfigurations[j];
targetProj = proj._project->GetBuildTarget(wconfig);
if (targetProj == 0) {
// look for a project config which is a substring of the workspace config
for (int k=0; k<proj._project->GetBuildTargetsCount(); ++k) {
pconfig = proj._project->GetBuildTarget(k)->GetTitle();
//Manager::Get()->GetLogManager()->DebugLog(_T("Test: %s <-> %s"), wconfig.c_str(), pconfig.c_str());
if (wconfig.StartsWith(pconfig) || pconfig.StartsWith(wconfig))
targetProj = proj._project->GetBuildTarget(k);
}
}
}
else { // msvc7
configIt = proj._configurations.find(_workspaceConfigurations[j]);
if (configIt != proj._configurations.end()) {
targetProj = proj._project->GetBuildTarget(configIt->second);
}
}
if (dep._configurations.empty()) { // msvc6
wconfig = _workspaceConfigurations[j];
targetDep = dep._project->GetBuildTarget(wconfig);
if (targetDep == 0) {
// look for a project config which is a substring of the workspace config
for (int k=0; k<dep._project->GetBuildTargetsCount(); ++k) {
pconfig = dep._project->GetBuildTarget(k)->GetTitle();
//Manager::Get()->GetLogManager()->DebugLog(_T("Test: %s <-> %s"), wconfig.c_str(), pconfig.c_str());
if (wconfig.StartsWith(pconfig) || pconfig.StartsWith(wconfig))
targetDep = dep._project->GetBuildTarget(k);
}
}
}
else { // msvc7
configIt = dep._configurations.find(_workspaceConfigurations[j]);
if (configIt != dep._configurations.end()) {
targetDep = dep._project->GetBuildTarget(configIt->second);
}
}
if ((targetDep==0) || (targetProj==0)) {
Manager::Get()->GetLogManager()->DebugLog(_T("ERROR: could not find targets"));
continue;
}
#if wxCHECK_VERSION(2, 9, 0)
Manager::Get()->GetLogManager()->DebugLog(F(_T("Match '%s' to '%s'"), targetProj->GetFullTitle().wx_str(), targetDep->GetFullTitle().wx_str()));
#else
Manager::Get()->GetLogManager()->DebugLog(F(_T("Match '%s' to '%s'"), targetProj->GetFullTitle().c_str(), targetDep->GetFullTitle().c_str()));
#endif
// now, update dependencies
TargetType type = targetDep->GetTargetType();
wxFileName fname;
if (type==ttDynamicLib) {
// targetDep->GetStaticLibFilename() do not work since it uses the filename instead of output filename
Compiler* compiler = CompilerFactory::GetCompiler(depIt->second._project->GetCompilerID());
wxString prefix = compiler->GetSwitches().libPrefix;
wxString suffix = compiler->GetSwitches().libExtension;
fname = targetDep->GetOutputFilename();
fname.SetName(prefix + fname.GetName());
fname.SetExt(suffix);
}
else if (type==ttStaticLib) fname = targetDep->GetOutputFilename();
targetProj->AddLinkLib(fname.GetFullPath());
targetProj->AddTargetDep(targetDep);
// TO REMOVE
wxString deps = targetProj->GetExternalDeps();
deps <<fname.GetFullPath() << _T(';');
targetProj->SetExternalDeps(deps);
// ---------
}
}
else {
Manager::Get()->GetLogManager()->DebugLog(_T("ERROR: dependency not found ") + proj._dependencyList[i]);
}
}
}
}