亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? vcprojprocess.cpp

?? 將VC7.0和VC.NET的工程轉換到VC6.0的工程,內有詳細的介紹做法(自己試驗后寫的)
?? CPP
?? 第 1 頁 / 共 3 頁
字號:

/////////////////////////////////////////////////////////////////////////////////
//
// vcprojprocess class implementation
//
// S.Rodriguez - Sept 2002
//
//
// purpose : convert a .vcproj file format to a .dsp file format
//           (a .vcproj file is the makefile of a VisualStudio 7 C++ project)
//
//


#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 "vcprojconfiguration.h"
#include "symbols.h"
#include "vcprojprocess.h"





// Constructor
vcprojprocess::vcprojprocess()
{
	::CoInitialize(NULL);
}
vcprojprocess::~vcprojprocess()
{
	::CoUninitialize();
}



// Methods
void vcprojprocess::process(CString &szSolutionName, PROJECTPARAM *p)
{
	m_szSolutionName = szSolutionName;
	m_cpPrj = p; // copy ptr

	if (!m_cpPrj) return; // good bye!

	CString szVcprojPath = m_cpPrj->szProjectPath;
	if ( !isFullPath(szVcprojPath) )
	{
		long i = m_szSolutionName.ReverseFind(0, '\\');

		CString szDirectory = m_szSolutionName.Left(i+1);

		szVcprojPath = szDirectory + szVcprojPath;
	}


	HRESULT hr;
	IXMLDOMDocument *pXMLDoc=NULL;

	hr = ::CoCreateInstance(CLSID_DOMDocument, 
							NULL, 
							CLSCTX_INPROC_SERVER, 
							IID_IXMLDOMDocument, 
							(void**)&pXMLDoc);

	if (FAILED(hr))
	{
		printf ("Cannot instantiate msxml2.dll\n");
		printf ("Please download the MSXML run-time (url below)\n");
		printf ("http://msdn.microsoft.com/downloads/default.asp?url=/downloads/sample.asp?url=/msdn-files/027/001/766/msdncompositedoc.xml\n");
		return;
	}

	VARIANT_BOOL vtbool;
	_variant_t bstrFilepath(szVcprojPath);

	pXMLDoc->put_async( VARIANT_BOOL(FALSE) );
	hr = pXMLDoc->load(bstrFilepath,&vtbool);

	if (FAILED(hr) || vtbool==VARIANT_FALSE)
	{
		printf ("Could not open %s.\n", szVcprojPath);
		pXMLDoc->Release();
		return;
	} 


	// ok, now the vcproj file is read
	// let's translate the content to the .dsp file
	//
	CString szDspFilename = szVcprojPath.Left( szVcprojPath.GetLength()-strlen(".vcproj") ) + ".dsp";


	// create empty .dsp file
	//
	BOOL bResult = m_outputFile.Open(szDspFilename,CFile::modeCreate|CFile::modeWrite);
	if (!bResult)
	{
		printf("Couldn't create %s\n.",szDspFilename);
		pXMLDoc->Release();
		return;
	}


	// now process the content
	//

	extractHeader( pXMLDoc );
	extractConfigurations( pXMLDoc );

	writeDspHeader();

	writeDspConfigurations( pXMLDoc );

	writeDspFiles( pXMLDoc );

	writeDspFooter();

	pXMLDoc->Release();
}



// extractHeader()
//
// purpose : extract key data from the .vcproj file content
//
void vcprojprocess::extractHeader(IXMLDOMDocument *pDoc)
{
	if (!pDoc) return;

	m_bIsConsoleApp = FALSE;

	// begin with the <VisualStudioProject> element
	//
	CComPtr<IXMLDOMNodeList> pRootNode;
	pDoc->getElementsByTagName( _bstr_t(XMLNODE_VISUALSTUDIOPROJECT), &pRootNode);
    if (pRootNode)
	{
		long nb = 0;
		pRootNode->get_length(&nb);
		if (nb==1)
		{
			CComPtr<IXMLDOMNode> pNode;
			pRootNode->get_item(0,&pNode);
			if (pNode)
			{
				CComQIPtr<IXMLDOMElement> pElem( pNode );

				getAttribValue(pElem,XMLATTRIB_NAME,m_szProjname);
				getAttribValue(pElem,XMLATTRIB_SCCPROJECTNAME,m_szSccProjectName);
				getAttribValue(pElem,XMLATTRIB_SCCPROJECTPATH,m_szSccLocalPath);

			}
		} // end if (nb==1)

	} // end if (pRootNode)


	// now get the list of project configurations, <Configuration> elements
	//
	CComPtr<IXMLDOMNodeList> pConfigs;
	pDoc->getElementsByTagName( _bstr_t(XMLNODE_CONFIGURATION), &pConfigs);
    if (pConfigs)
	{

		long nb = 0;
		pConfigs->get_length(&nb);

		for (long i=0; i<nb; i++)
		{
			CComPtr<IXMLDOMNode> pNode;
			pConfigs->get_item(i,&pNode);
			if (pNode)
			{
				CComQIPtr<IXMLDOMElement> pElem( pNode );

				if (i==0) // retrieve target type
				{
					getAttribValue(pElem,XMLATTRIB_TARGETTYPE,m_szTargetType);

					
					if ( m_szTargetType.Compare("1") ) // check if the application is also a console app
					{
						CComPtr<IXMLDOMNodeList> pResult;
						HRESULT hr = pElem->selectNodes(_bstr_t("Tool[@Name='VCLinkerTool']"), &pResult);
						if (pResult)
						{
							long nbResult = 0;
							pResult->get_length(&nbResult);

							if (nbResult>0)
							{
								CComPtr<IXMLDOMNode> pResult0;
								pResult->get_item(0,&pResult0);
								if (pResult0)
								{
									CComQIPtr<IXMLDOMElement> pElem0( pResult0 );

									CString szPreProcDefs;
									getAttribValue(pElem0,XMLATTRIB_SUBSYSTEM,szPreProcDefs);

									m_bIsConsoleApp = szPreProcDefs.CompareNoCase("1"); // console app if = 1
								}
							}

						} // end if (pResult)
					}
				} // if (i==0) 

				// get configuration name
				CString szConfigName;
				getAttribValue(pElem,XMLATTRIB_NAME,szConfigName);

				if ( !szConfigName.IsEmpty() )
					m_arrConfigurationNames.Add( szConfigName );


			} // end if pNode

		} // end for


	} // end if (pConfigs)
}


// extractConfigurations()
//
// purpose : extract configuration data from the .vcproj file content
//
void vcprojprocess::extractConfigurations(IXMLDOMDocument *pDoc)
{
	if (!pDoc) return; // good bye!

	CComPtr<IXMLDOMNodeList> pConfigs;
	pDoc->getElementsByTagName( _bstr_t(XMLNODE_CONFIGURATION), &pConfigs);
    if (pConfigs)
	{

		long nb = 0;
		pConfigs->get_length(&nb);

		for (long i=0; i<nb; i++)
		{
			CComPtr<IXMLDOMNode> pNode;
			pConfigs->get_item(i,&pNode);
			if (pNode)
			{
				CComQIPtr<IXMLDOMElement> pConfiguration( pNode );
	
				// create a container in memory, and fill it with the configuration data
				//
				vcprojconfiguration *pVCConfig = new vcprojconfiguration();
				if (pVCConfig)
				{
					m_arrConfigs.Add( pVCConfig );
					pVCConfig->fill( pConfiguration );
				}
			}
		} // end for all configurations

	} // end if (pConfigs)
}


// extractFileConfigurations()
//
// purpose : extract configuration data from the a custom file content
//
void vcprojprocess::extractFileConfigurations(IXMLDOMElement *pFileElement, ConfigurationArray &arrFileConfigs)
{
	if (!pFileElement) return; // good bye!

	CComPtr<IXMLDOMNodeList> pConfigs;
	pFileElement->getElementsByTagName( _bstr_t(XMLNODE_FILECONFIGURATION), &pConfigs);
    if (pConfigs)
	{

		long nb = 0;
		pConfigs->get_length(&nb);

		for (long i=0; i<nb; i++)
		{
			CComPtr<IXMLDOMNode> pNode;
			pConfigs->get_item(i,&pNode);
			if (pNode)
			{
				CComQIPtr<IXMLDOMElement> pConfiguration( pNode );
	
				// create a container in memory, and fill it with the configuration data
				//
				vcprojconfiguration *pVCConfig = new vcprojconfiguration();
				if (pVCConfig)
				{
					arrFileConfigs.Add( pVCConfig );
					pVCConfig->fill( pConfiguration );
				}
			}
		} // end for all configurations

	} // end if (pConfigs)
}



void vcprojprocess::writeDspHeader()
{
	if (m_szProjname.IsEmpty() || m_arrConfigurationNames.GetSize()==0) return;

// Win32 (x86) Dynamic-Link Library 
// Win32 (x86) Application
// Win32 (x86) Console Application
// Win32 (x86) Static Library
// Win32 (x86) External Target  = makefile project

	CString szFriendlyTargetType;
	CString szHexaTargetType;
	if (m_szTargetType.Compare("1"))
	{
		szFriendlyTargetType = m_bIsConsoleApp ? " (x86) Console Application" : " (x86) Application";
		szHexaTargetType = m_bIsConsoleApp ? "0x0103" : "0x0101";
	}
	else if (m_szTargetType.Compare("2"))
	{
		szFriendlyTargetType = " (x86) Dynamic-Link Library";
		szHexaTargetType = "0x0102";
	}
	else if (m_szTargetType.Compare("4"))
	{
		szFriendlyTargetType = " (x86) Static Library";
		szHexaTargetType = "0x0104";
	}
	else if (m_szTargetType.Compare("0"))
	{
		szFriendlyTargetType = " (x86) External Target"; // makefile project
		szHexaTargetType = "0x0106";
	}
	else
	{
		szFriendlyTargetType = " (x86) Unknown Target"; // not likely to happen, though
		szHexaTargetType = "0x0100";
	}

	CString szPlatform = ExtractPlatform( m_arrConfigurationNames.GetAt(0) ); // usually it is Win32

	szFriendlyTargetType = szPlatform + szFriendlyTargetType;


	CString s = "# Microsoft Developer Studio Project File - Name=\"";
	s += m_szProjname;
	s += "\" - Package Owner=<4>\r\n";
	m_outputFile.Write(s);
	s = "# Microsoft Developer Studio Generated Build File, Format Version 6.00\r\n";
	m_outputFile.Write(s);
	s = "# ** DO NOT EDIT **\r\n\r\n";
	m_outputFile.Write(s);
	s = "# TARGTYPE \"" + szFriendlyTargetType + "\" " + szHexaTargetType + "\r\n\r\n";
	m_outputFile.Write(s);
	s = "CFG=" + TranslateConfigurationName( m_arrConfigurationNames.GetAt(0) ) + "\r\n";
	m_outputFile.Write(s);
	s = "!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r\n";
	m_outputFile.Write(s);
	s = "!MESSAGE use the Export Makefile command and run\r\n";
	m_outputFile.Write(s);
	s = "!MESSAGE \r\n";
	m_outputFile.Write(s);
	s = "!MESSAGE NMAKE /f \"" + m_szProjname + ".mak\".\r\n";
	m_outputFile.Write(s);
	s = "!MESSAGE \r\n";
	m_outputFile.Write(s);
	s = "!MESSAGE You can specify a configuration when running NMAKE\r\n";
	m_outputFile.Write(s);
	s = "!MESSAGE by defining the macro CFG on the command line. For example:\r\n";
	m_outputFile.Write(s);
	s = "!MESSAGE \r\n";
	m_outputFile.Write(s);
	s = "!MESSAGE NMAKE /f \"" + m_szProjname + ".mak\" CFG=\"";
	s += TranslateConfigurationName( m_arrConfigurationNames.GetAt(0) );
	s += "\"\r\n";
	m_outputFile.Write(s);
	s = "!MESSAGE \r\n";
	m_outputFile.Write(s);
	s = "!MESSAGE Possible choices for configuration are:\r\n";
	m_outputFile.Write(s);
	s = "!MESSAGE \r\n";
	m_outputFile.Write(s);

	// all configs
	long nConfigNb = m_arrConfigurationNames.GetSize();
	for (long i=0; i<nConfigNb; i++)
	{
		s = "!MESSAGE \"";
		s += TranslateConfigurationName( m_arrConfigurationNames.GetAt(i) );
		s += "\" (based on \"";
		s += szFriendlyTargetType;
		s += "\")\r\n";
		m_outputFile.Write(s);
	}

	s = "!MESSAGE \r\n\r\n";
	m_outputFile.Write(s);
	s = "# Begin Project\r\n";
	m_outputFile.Write(s);
	s = "# PROP AllowPerConfigDependencies 0\r\n";
	m_outputFile.Write(s);
	s = "# PROP Scc_ProjName \"" + m_szSccProjectName + "\"\r\n";
	m_outputFile.Write(s);
	s = "# PROP Scc_LocalPath \"" + m_szSccLocalPath + "\"\r\n";
	m_outputFile.Write(s);
	s = "CPP=cl.exe\r\n";
	m_outputFile.Write(s);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
aaa亚洲精品一二三区| 欧美一区二区三区色| 欧美美女一区二区在线观看| 精品国产成人在线影院| 亚洲日本中文字幕区| 国产美女一区二区| 这里只有精品免费| 亚洲丝袜精品丝袜在线| 国精产品一区一区三区mba桃花 | 国产麻豆视频一区| 欧美精品丝袜中出| 一区二区久久久久久| 国产福利精品导航| 欧美成人vps| 奇米精品一区二区三区在线观看一| 91亚洲国产成人精品一区二区三 | 国产一区二区三区在线看麻豆| 一本色道久久加勒比精品| 亚洲国产成人自拍| 国产精品91xxx| 精品国产免费久久| 激情综合亚洲精品| xf在线a精品一区二区视频网站| 天天综合色天天综合色h| 日本高清无吗v一区| 亚洲私人黄色宅男| 97久久精品人人做人人爽| 国产精品久久久久久久岛一牛影视 | 免费观看成人鲁鲁鲁鲁鲁视频| 色成人在线视频| 国产精品福利影院| jvid福利写真一区二区三区| 国产精品久久久久久久久果冻传媒| 狠狠色综合日日| 久久久久国产成人精品亚洲午夜| 久久成人免费网| 欧美成人一区二区三区片免费 | 8v天堂国产在线一区二区| 亚洲动漫第一页| 欧美日韩国产综合一区二区 | 精品一区二区免费看| 日韩一级高清毛片| 久久激五月天综合精品| 亚洲精品在线免费播放| 国产麻豆精品视频| 国产精品毛片大码女人| 97精品久久久午夜一区二区三区| 国产精品入口麻豆九色| 99re免费视频精品全部| 亚洲精品国产无天堂网2021| 欧美视频自拍偷拍| 蜜乳av一区二区| 久久新电视剧免费观看| www.欧美日韩| 亚洲电影一级片| 欧美xxxxxxxxx| 99精品视频免费在线观看| 一区二区三区精品在线| 欧美一级片在线看| 国产91高潮流白浆在线麻豆| 亚洲视频香蕉人妖| 欧美一区二区视频在线观看2022| 国产精品一区二区三区乱码| 亚洲黄色在线视频| 欧美不卡视频一区| 一本大道久久a久久综合| 麻豆91精品91久久久的内涵| 国产精品无遮挡| 欧美人狂配大交3d怪物一区| 国产综合色精品一区二区三区| 亚洲女爱视频在线| 精品国产一区二区三区不卡 | 欧美午夜精品电影| 久久精品99国产精品| 亚洲图片另类小说| 精品福利一二区| 91传媒视频在线播放| 极品少妇一区二区| 亚洲欧洲av色图| 欧美不卡一区二区三区四区| 91色.com| 国产成人综合网| 日韩vs国产vs欧美| 亚洲精品中文在线| 久久久777精品电影网影网| 欧美视频一区二区三区| 成人激情动漫在线观看| 久久成人久久爱| 偷拍自拍另类欧美| 亚洲色图视频免费播放| 久久天堂av综合合色蜜桃网| 欧美日韩综合不卡| 色哟哟一区二区三区| 岛国av在线一区| 激情五月婷婷综合| 久久99国产精品免费| 亚洲h在线观看| 亚洲狠狠爱一区二区三区| 中文字幕一区二区在线观看| 久久嫩草精品久久久久| 26uuu亚洲婷婷狠狠天堂| 欧美日韩国产影片| 在线观看成人小视频| 91丨国产丨九色丨pron| 成人精品一区二区三区四区 | 97久久久精品综合88久久| 懂色av中文字幕一区二区三区| 美女尤物国产一区| 蜜桃一区二区三区在线观看| 日韩在线一区二区| 亚州成人在线电影| 偷窥国产亚洲免费视频| 亚洲国产视频a| 亚洲一二三专区| 午夜精品一区二区三区免费视频| 亚洲精品国产精品乱码不99| 亚洲欧美一区二区久久| 亚洲另类中文字| 怡红院av一区二区三区| 一区二区三区欧美在线观看| 一区二区三区在线视频观看| 亚洲一区二区视频在线观看| 亚洲精品ww久久久久久p站| 夜夜嗨av一区二区三区网页 | 欧美挠脚心视频网站| 欧美一级二级三级乱码| 亚洲精品在线免费观看视频| 国产亚洲精品bt天堂精选| 亚洲国产成人在线| 亚洲精品一卡二卡| 日韩高清不卡在线| 精品在线一区二区三区| 国产99一区视频免费| 91免费视频网| 欧美人妖巨大在线| 久久久一区二区三区捆绑**| 欧美国产成人在线| 亚洲国产精品综合小说图片区| 日日骚欧美日韩| 国产成人亚洲精品青草天美| 夫妻av一区二区| 欧美午夜精品一区| 日韩欧美的一区| 国产精品久久久久久久久久久免费看 | 国产喂奶挤奶一区二区三区| 国产欧美视频在线观看| 亚洲女同一区二区| 久色婷婷小香蕉久久| gogo大胆日本视频一区| 欧美三级视频在线观看| 久久综合99re88久久爱| 成人免费在线视频| 久久er99热精品一区二区| 91天堂素人约啪| 欧美一区二区三区四区五区| 欧美高清在线一区| 日韩成人午夜电影| 99在线热播精品免费| 日韩欧美黄色影院| 一区二区三区在线观看欧美| 理论电影国产精品| 91福利视频在线| 国产女主播一区| 日日夜夜一区二区| 91亚洲资源网| 国产欧美一区二区三区鸳鸯浴| 亚洲妇熟xx妇色黄| 97国产一区二区| 久久久久国色av免费看影院| 天堂成人国产精品一区| 一本色道a无线码一区v| 国产偷国产偷亚洲高清人白洁 | 亚洲自拍都市欧美小说| 国产精品一区二区三区四区| 欧美精品免费视频| 亚洲欧美日韩中文播放| 国产不卡在线视频| 日韩精品一区在线| 日日摸夜夜添夜夜添国产精品| 色网综合在线观看| 国产精品久久国产精麻豆99网站| 美国三级日本三级久久99| 欧美三级日韩三级| 亚洲精品中文字幕在线观看| 成人黄色一级视频| 久久综合狠狠综合久久激情| 日韩高清国产一区在线| 欧美日韩夫妻久久| 一区二区三区日韩精品视频| 91在线视频播放| 国产精品毛片a∨一区二区三区| 国产伦精品一区二区三区视频青涩| 在线不卡欧美精品一区二区三区| 一区二区欧美视频| 欧美体内she精高潮| 亚洲一区中文在线| 欧美在线小视频| 亚洲成人免费看| 91精品免费在线观看| 日韩成人精品在线|