亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
久久亚洲一区二区三区四区| 欧美影院一区二区三区| 精品国产91亚洲一区二区三区婷婷| 亚洲成人免费看| 欧美一区二区视频在线观看2022 | 国v精品久久久网| 亚洲精品一区二区三区99| 国产一区二区在线观看免费| 久久久久久久久久久99999| av中文字幕不卡| 亚洲一区二区三区中文字幕| 欧美一区二区精品在线| 国产精品 欧美精品| 亚洲人xxxx| 日韩欧美中文字幕制服| 国产激情精品久久久第一区二区| 国产精品麻豆网站| 欧美三级韩国三级日本三斤| 蜜臀av性久久久久蜜臀aⅴ| 久久精品人人做人人爽97| 色综合久久88色综合天天6| 视频一区在线视频| 国产农村妇女精品| 欧美性受xxxx黑人xyx性爽| 国产一区二区三区精品欧美日韩一区二区三区 | 91精品国产综合久久精品图片| 亚洲香肠在线观看| 欧美电影免费观看高清完整版| 成人app网站| 日韩电影在线免费| 国产精品久久夜| 91精品国产综合久久精品麻豆| 国产精品 日产精品 欧美精品| 亚洲婷婷在线视频| 欧美不卡在线视频| 色综合天天综合色综合av| 麻豆91在线观看| 一区二区三区久久久| 久久影音资源网| 欧美日韩小视频| 97精品电影院| 国产最新精品精品你懂的| 亚洲一二三区视频在线观看| 欧美高清在线精品一区| 欧美岛国在线观看| 欧美日韩亚洲综合| heyzo一本久久综合| 精品一二三四在线| 午夜婷婷国产麻豆精品| 成人欧美一区二区三区在线播放| 日韩精品一区二区三区视频在线观看| 91香蕉视频mp4| 国产精品一区二区男女羞羞无遮挡| 亚洲尤物在线视频观看| 中文字幕乱码一区二区免费| 日韩久久久久久| 7777精品伊人久久久大香线蕉完整版| 成人av手机在线观看| 国产精品亚洲一区二区三区妖精| 亚洲va国产va欧美va观看| 亚洲男女毛片无遮挡| 中文字幕不卡在线| 欧美激情综合五月色丁香小说| 久久众筹精品私拍模特| 日韩欧美一区中文| 91精品国产综合久久精品麻豆| 欧美日韩精品一区二区三区四区| 色狠狠色噜噜噜综合网| 91在线云播放| 日本韩国欧美一区二区三区| 91免费看片在线观看| 99精品国产91久久久久久| 不卡的av网站| 色美美综合视频| 欧美午夜精品久久久久久孕妇| 色88888久久久久久影院按摩| 91麻豆精品在线观看| 99精品视频一区| 91国产视频在线观看| 欧美中文字幕一区| 欧美精品亚洲一区二区在线播放| 欧美色图激情小说| 欧美美女一区二区在线观看| 欧美日韩高清一区二区不卡| 欧美吞精做爰啪啪高潮| 欧美军同video69gay| 51精品视频一区二区三区| 777午夜精品免费视频| 精品少妇一区二区三区在线播放 | 日韩精品一区二区三区在线播放| 日韩美女视频一区二区在线观看| 欧美tickling挠脚心丨vk| 欧美成人猛片aaaaaaa| 26uuu精品一区二区在线观看| 国产视频一区不卡| 国产精品三级电影| 一区二区三区在线影院| 丝袜美腿亚洲色图| 久久99精品久久久久久| 国产夫妻精品视频| 91久久国产最好的精华液| 在线不卡欧美精品一区二区三区| 日韩午夜在线观看| 久久夜色精品国产欧美乱极品| 国产拍欧美日韩视频二区| 亚洲人成在线观看一区二区| 亚洲午夜一区二区| 国产一区美女在线| 色欧美片视频在线观看在线视频| 欧美日本一区二区| 久久精品男人的天堂| 亚洲精品国产a| 蜜桃精品视频在线| 91在线你懂得| 91精品国产综合久久久蜜臀图片| 国产欧美精品在线观看| 亚洲综合区在线| 国产一区二区导航在线播放| 不卡视频一二三| 欧美一二三四区在线| 国产欧美日韩久久| 三级不卡在线观看| 成人精品小蝌蚪| 在线成人小视频| 亚洲视频一二区| 久久精品国产成人一区二区三区 | 国产精品66部| 欧美日韩一区国产| 国产精品素人一区二区| 免费观看在线综合色| 在线观看91视频| 欧美激情中文不卡| 久久精品国产99国产| 日本韩国精品在线| 日本一区二区动态图| 蜜桃av噜噜一区| 欧洲精品一区二区| 国产精品二区一区二区aⅴ污介绍| 日韩不卡手机在线v区| 一本到高清视频免费精品| 国产欧美日韩在线| 玖玖九九国产精品| 欧美美女黄视频| 亚洲毛片av在线| 国产成人精品亚洲日本在线桃色 | 91久久精品国产91性色tv| 国产欧美日韩亚州综合| 日本视频一区二区三区| 色婷婷国产精品久久包臀| 国产欧美一区在线| 国产一区二区三区在线观看免费视频 | 久久精品视频一区| 久久er精品视频| 欧美三级电影网| 一个色妞综合视频在线观看| 99视频一区二区| 国产精品久久久久天堂| 粉嫩高潮美女一区二区三区| 欧美精品一区二区久久婷婷| 奇米精品一区二区三区在线观看| 欧美男男青年gay1069videost| 亚洲黄色录像片| 欧美亚洲国产一区在线观看网站 | 成人免费毛片片v| 久久久久国产精品麻豆ai换脸| 激情偷乱视频一区二区三区| 日韩精品中午字幕| 激情五月婷婷综合| 亚洲精品在线电影| 韩国女主播一区| 欧美激情一区二区三区全黄| 成人少妇影院yyyy| 自拍视频在线观看一区二区| 97se亚洲国产综合自在线不卡| 中文字幕日韩一区| 91美女视频网站| 一区二区三区四区蜜桃| 在线看日本不卡| 日日夜夜免费精品| 欧美成人精品二区三区99精品| 蜜桃视频在线观看一区| 国产视频亚洲色图| www.亚洲精品| 亚洲午夜电影在线观看| 欧美一区二视频| 国产一区二区三区免费在线观看| 国产亚洲人成网站| 99久久99久久精品免费观看| 亚洲综合在线免费观看| 欧美一区二区视频在线观看| 激情文学综合插| 国产精品成人在线观看| 色综合 综合色| 亚洲影院理伦片| 精品国产乱码久久| 91在线视频免费91| 免费人成精品欧美精品| 国产清纯美女被跳蛋高潮一区二区久久w| 波多野结衣精品在线| 午夜视频久久久久久|