/////////////////////////////////////////////////////////////////////////////////
//
// vcprojconfiguration class implementation
//
// S.Rodriguez - Sept 2002
//
//
// purpose : fill class members with actual configuration data from the .vcproj file
//
//
//
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <atlbase.h> // CComPtr
#include <comutil.h> // _variant_t
#pragma comment(lib, "comsupp.lib")
#include "msxml2.h"
#include "slnprocess.h"
#include "symbols.h"
#include "vcprojconfiguration.h"
vcprojconfiguration::vcprojconfiguration()
{
setMasterProjConfigurations(NULL);
}
// Accessors
void vcprojconfiguration::setMasterProjConfigurations(vcprojconfiguration *p) // used for FileConfiguration
{
m_cpParentConfigurations = p;
}
CString vcprojconfiguration::getConfigName()
{
CString s;
s = General.GetValue(XMLATTRIB_NAME);
return s;
}
BOOL vcprojconfiguration::hasVCConfigTool(CString &szToolName)
{
if (szToolName.CompareNoCase(VCCOMPILERTOOL))
return VCCLCompilerTool.GetValue(XMLATTRIB_NAME).GetLength()>0;
else if (szToolName.CompareNoCase(VCLIBRARIANTOOL))
return VCLibrarianTool.GetValue(XMLATTRIB_NAME).GetLength()>0;
else if (szToolName.CompareNoCase(VCLINKERTOOL))
return VCLinkerTool.GetValue(XMLATTRIB_NAME).GetLength()>0;
else if (szToolName.CompareNoCase(VCRESOURCECOMPILERTOOL))
return VCResourceCompilerTool.GetValue(XMLATTRIB_NAME).GetLength()>0;
else if (szToolName.CompareNoCase(VCMIDLTOOL))
return VCMidlTool.GetValue(XMLATTRIB_NAME).GetLength()>0;
else if (szToolName.CompareNoCase(VCBSCMAKETOOL))
return VCBscMakeTool.GetValue(XMLATTRIB_NAME).GetLength()>0;
else if (szToolName.CompareNoCase(VCPREBUILDEVENTTOOL))
return VCPreBuildEventTool.GetValue(XMLATTRIB_NAME).GetLength()>0;
else if (szToolName.CompareNoCase(VCPRELINKEVENTTOOL))
return VCPreLinkEventTool.GetValue(XMLATTRIB_NAME).GetLength()>0;
else if (szToolName.CompareNoCase(VCPOSTBUILDEVENTTOOL))
return VCPostBuildEventTool.GetValue(XMLATTRIB_NAME).GetLength()>0;
else if (szToolName.CompareNoCase(VCCUSTOMBUILDTOOL))
return VCCustomBuildTool.GetValue(XMLATTRIB_NAME).GetLength()>0;
else if (szToolName.CompareNoCase(VCNMAKETOOL))
return VCNMakeTool.GetValue(XMLATTRIB_NAME).GetLength()>0;
else if (szToolName.CompareNoCase(VCDEBUGSETTINGSTOOL))
return VCDebugSettingsTool.GetValue(XMLATTRIB_NAME).GetLength()>0;
return FALSE;
}
void vcprojconfiguration::fill(/*in*/IXMLDOMElement *p) // fill class members
{
if (!p) return; // good bye!
// first of all, store all attribute names/values in the "General" member
//
fillFromAttributes(p, General);
// then proceed, with all <Tool> occurences
//
CComPtr<IXMLDOMNodeList> pTools;
p->getElementsByTagName( _bstr_t(XMLNODE_TOOL), &pTools);
if (pTools)
{
long nb = 0;
pTools->get_length(&nb);
for (long i=0; i<nb; i++)
{
CComPtr<IXMLDOMNode> pToolNode;
pTools->get_item(i,&pToolNode);
if (pToolNode)
{
CComQIPtr<IXMLDOMElement> pTool( pToolNode );
CString szToolName;
getAttribValue(pTool, XMLATTRIB_NAME, szToolName);
if (szToolName.CompareNoCase(VCCOMPILERTOOL))
fillFromAttributes(pTool, VCCLCompilerTool);
else if (szToolName.CompareNoCase(VCLIBRARIANTOOL))
fillFromAttributes(pTool, VCLibrarianTool);
else if (szToolName.CompareNoCase(VCLINKERTOOL))
fillFromAttributes(pTool, VCLinkerTool);
else if (szToolName.CompareNoCase(VCRESOURCECOMPILERTOOL))
fillFromAttributes(pTool, VCResourceCompilerTool);
else if (szToolName.CompareNoCase(VCMIDLTOOL))
fillFromAttributes(pTool, VCMidlTool);
else if (szToolName.CompareNoCase(VCBSCMAKETOOL))
fillFromAttributes(pTool, VCBscMakeTool);
else if (szToolName.CompareNoCase(VCPREBUILDEVENTTOOL))
fillFromAttributes(pTool, VCPreBuildEventTool);
else if (szToolName.CompareNoCase(VCPRELINKEVENTTOOL))
fillFromAttributes(pTool, VCPreLinkEventTool);
else if (szToolName.CompareNoCase(VCPOSTBUILDEVENTTOOL))
fillFromAttributes(pTool, VCPostBuildEventTool);
else if (szToolName.CompareNoCase(VCCUSTOMBUILDTOOL))
fillFromAttributes(pTool, VCCustomBuildTool);
else if (szToolName.CompareNoCase(VCNMAKETOOL))
fillFromAttributes(pTool, VCNMakeTool);
else if (szToolName.CompareNoCase(VCDEBUGSETTINGSTOOL))
fillFromAttributes(pTool, VCDebugSettingsTool);
}
}
} // end if (pTools)
}
void vcprojconfiguration::fillFromAttributes(/*in*/IXMLDOMElement *p, /*out*/FindableArray &arrAttribs)
{
CComPtr<IXMLDOMNamedNodeMap> pAttributes;
p->get_attributes(&pAttributes);
if (pAttributes)
{
long nbAttribs = 0;
pAttributes->get_length(&nbAttribs);
for (long i=0; i<nbAttribs; i++)
{
CComPtr<IXMLDOMNode> pAttrib;
pAttributes->get_item(i,&pAttrib);
if (pAttrib)
{
BSTR bstrName;
pAttrib->get_nodeName(&bstrName);
CString szName;
BSTR_to_CString(bstrName,szName);
VARIANT vtValue;
pAttrib->get_nodeValue( &vtValue);
CString szValue;
VARIANT_to_CString( vtValue, szValue);
// add this name/value pair
if (!szName.IsEmpty())
{
SINGLEVALUEPARAM *p = new SINGLEVALUEPARAM();
if (p)
{
p->szName = szName;
p->szValue = szValue;
}
arrAttribs.Add( p );
}
}
}
} // end if (pAttributes)
}
CString vcprojconfiguration::serializeCPPSymbols(BOOL bFileConfiguration)
{
long i;
CString szReturn, s;
// sections are divided wrt to VC++7 (rescrambled for any reason by MS from VC++6)
// -- general tab
//
CString szAdditionalIncludeDirectories;
ArrayCString arrAdditionalIncludeDirectories;
s = VCCLCompilerTool.GetValue("AdditionalIncludeDirectories");
if (s.Find(0,",")>-1)
TokenizeString(s,',',arrAdditionalIncludeDirectories); // parse comma-separated path
else
TokenizeString(s,';',arrAdditionalIncludeDirectories); // or parse semi-colon-separated path
for (i=0; i<arrAdditionalIncludeDirectories.GetSize(); i++)
{
CString szDirectory = arrAdditionalIncludeDirectories.GetAt(i);
if ( !szDirectory.CompareNoCase("$(NOINHERIT)") )
szAdditionalIncludeDirectories += "/I \"" + szDirectory + "\" ";
}
CString szDebugInformationFormat;
s = VCCLCompilerTool.GetValue("DebugInformationFormat");
if (s.CompareNoCase("1"))
szDebugInformationFormat = "/Z7 ";
else if (s.CompareNoCase("2"))
szDebugInformationFormat = "/Zd ";
else if (s.CompareNoCase("3"))
szDebugInformationFormat = "/Zi ";
else if (s.CompareNoCase("4"))
szDebugInformationFormat = "/ZI ";
CString szSuppressStartupBanner = "/nologo "; // default VC7 behaviour is "suppress banner"
if ( VCCLCompilerTool.GetValue("SuppressStartupBanner").CompareNoCase("FALSE") )
szSuppressStartupBanner.Empty();
CString szWarningLevel;
s = VCCLCompilerTool.GetValue("WarningLevel");
if (s.CompareNoCase("0") || s.CompareNoCase("1") || s.CompareNoCase("2") || s.CompareNoCase("3") || s.CompareNoCase("4"))
{
szWarningLevel = "/W" + s + " ";
}
CString szWarnAsError;
if ( VCCLCompilerTool.GetValue("WarnAsError").CompareNoCase("TRUE") )
szWarnAsError += "/WX ";
// -- optimization tab
//
CString szOptimization;
s = VCCLCompilerTool.GetValue("Optimization");
if (s.CompareNoCase("0"))
szOptimization = "/Od "; // disabled
else if (s.CompareNoCase("1"))
szOptimization = "/O1 "; // minimize size
else if (s.CompareNoCase("2"))
szOptimization = "/O2 "; // maximize speed
else if (s.CompareNoCase("3"))
szOptimization = "/Ox "; // combined optim (/Ob1 /Og /Oi /Ot /Oy /Gs)
CString szGlobalOptimizations;
if ( VCCLCompilerTool.GetValue("GlobalOptimizations").CompareNoCase("TRUE") )
szGlobalOptimizations = "/Og ";
CString szInlineFunctionExpansion; // disabled (/Ob0 is useless because
没有合适的资源?快使用搜索试试~ 我知道了~
VC.NET_change_to_VC6.0.rar_vc6.0
共27个文件
h:11个
cpp:7个
plg:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 53 浏览量
2022-09-21
04:13:45
上传
评论
收藏 144KB RAR 举报
温馨提示
VC.NET转换成VC6.0的程序源码。
资源推荐
资源详情
资源评论
收起资源包目录
VC.NET_change_to_VC6.0.rar (27个子文件)
20063256225426
vc7tovc6
prjconverter.ncb 73KB
CString.h 11KB
prjconverter.dsw 545B
prjconverter.dsp 6KB
symbols.h 2KB
Templates.h 11KB
vcprojconfiguration.cpp 55KB
slnprocess.h 1KB
vcprojprocess.cpp 31KB
vcprojconfiguration.h 3KB
CFile.h 7KB
msxml2.h 957KB
vcprojprocess.h 2KB
slnprocess.cpp 11KB
FileFind.h 899B
Folder.cpp 1KB
StdAfx.cpp 299B
prjconverter.cpp 3KB
FileFind.cpp 869B
StdAfx.h 769B
Folder.h 539B
prjconverter.plg 1KB
msxml2.lib 44KB
prjconverter.opt 148KB
下载说明.htm 5KB
新云软件.url 261B
www.pudn.com.txt 218B
共 27 条
- 1
资源评论
御道御小黑
- 粉丝: 58
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功