compliervcnet.cpp

来自「自动化编译工具代码」· C++ 代码 · 共 78 行

CPP
78
字号
// ComplierVCNet.cpp: implementation of the CComplierVCNet class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "ComplierVCNet.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

#if _MSC_VER >= 1300

CComplierVCNet::CComplierVCNet(NetVersion version)
{
	CString strNETVersion;
	if		(NET2002 == version) strNETVersion = "VisualStudio.DTE.7.0";
	else if	(NET2003 == version) strNETVersion = "VisualStudio.DTE.7.1";
	else if	(NET2005 == version) strNETVersion = "VisualStudio.DTE.8.0";
	else                         ASSERT(FALSE);

	if (!strNETVersion.IsEmpty())
	{
		HRESULT hr = m_pDTE.CreateInstance(strNETVersion);
		ASSERT(SUCCEEDED(hr));
	}
}

CComplierVCNet::~CComplierVCNet()
{

}

BOOL CComplierVCNet::Build(const CString &strProjectFile,
						   const CString &strConfigName,
						   const CString &strOutputFile)
{
	_SolutionPtr pSolution;
	HRESULT hr = m_pDTE->get_Solution(&pSolution);
	hr = pSolution->Open(_bstr_t(strProjectFile.AllocSysString()));
	if (FAILED(hr))			return FALSE;

	SolutionBuildPtr			pSolutionBuild;
	hr = pSolution->get_SolutionBuild(&pSolutionBuild);
	SolutionConfigurationsPtr	pSolutionConfigurations;
	hr = pSolutionBuild->get_SolutionConfigurations(&pSolutionConfigurations);

	long lCount = 0;
	pSolutionConfigurations->get_Count(&lCount);
	for (int i = 1; i <= lCount; i++)		//Iterator SolutionConfigurations
	{
		SolutionConfigurationPtr pSolutionConfiguration;
		hr = pSolutionConfigurations->Item(CComVariant(i), &pSolutionConfiguration);
		//		ASSERT(pSolutionConfiguration != NULL);

		CComBSTR bstrConfig;
		hr = pSolutionConfiguration->get_Name(&bstrConfig);
		bstrConfig.ToLower();
		if (CString(bstrConfig.Copy()) == strConfigName)			//only complier release
		{
			hr = pSolutionConfiguration->Activate();
			hr = pSolutionBuild->Clean(VARIANT_TRUE);
			hr = pSolutionBuild->Build(VARIANT_TRUE);
			return SUCCEEDED(hr);
		}
	}

	return FALSE;
}

#endif // _MSC_VER > 1000

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?