100 lines
2.1 KiB
C++
100 lines
2.1 KiB
C++
// CMakeCommandLineInfo.cpp : command line arguments
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "CMakeCommandLineInfo.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
///////////////////////////////////////////////////////////////
|
|
// CMakeCommandLineInfo
|
|
|
|
CMakeCommandLineInfo::CMakeCommandLineInfo()
|
|
{
|
|
this->m_WhereSource = _T("");
|
|
this->m_WhereBuild = _T("");
|
|
this->m_AdvancedValues = FALSE;
|
|
this->m_GeneratorChoiceString = _T("");
|
|
this->m_LastUnknownParameter = _T("");
|
|
}
|
|
|
|
CMakeCommandLineInfo::~CMakeCommandLineInfo()
|
|
{
|
|
}
|
|
|
|
int CMakeCommandLineInfo::GetBoolValue(const CString& v) {
|
|
CString value = v;
|
|
value.MakeLower();
|
|
if (value == "1" ||
|
|
value == "on" ||
|
|
value == "true" ||
|
|
value == "yes")
|
|
{
|
|
return 1;
|
|
}
|
|
else if (value == "0" ||
|
|
value == "off" ||
|
|
value == "false" ||
|
|
value == "no")
|
|
{
|
|
return -1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////
|
|
// Parse param
|
|
|
|
void CMakeCommandLineInfo::ParseParam(LPCTSTR lpszParam, BOOL bFlag, BOOL bLast)
|
|
{
|
|
if(!bFlag)
|
|
{
|
|
this->m_LastUnknownParameter = lpszParam;
|
|
}
|
|
else
|
|
{
|
|
CString sParam(lpszParam);
|
|
// Single letter valued flag like /B=value or /B:value
|
|
CString value;
|
|
if (sParam[1] == '=' || sParam[1] == ':')
|
|
{
|
|
value = sParam.Right(sParam.GetLength() - 2);
|
|
}
|
|
else
|
|
{
|
|
value = sParam.Right(sParam.GetLength()-1);
|
|
}
|
|
int res;
|
|
switch (sParam[0])
|
|
{
|
|
case 'A':
|
|
res = CMakeCommandLineInfo::GetBoolValue(value);
|
|
if (res == 1)
|
|
{
|
|
this->m_AdvancedValues = TRUE;
|
|
}
|
|
else if (res == -1)
|
|
{
|
|
this->m_AdvancedValues = FALSE;
|
|
}
|
|
break;
|
|
case 'B':
|
|
this->m_WhereBuild = value;
|
|
break;
|
|
case 'G':
|
|
this->m_GeneratorChoiceString = value;
|
|
break;
|
|
case 'H':
|
|
this->m_WhereSource = value;
|
|
break;
|
|
}
|
|
}
|
|
|
|
// Call the base class to ensure proper command line processing
|
|
CCommandLineInfo::ParseParam(lpszParam, bFlag, bLast);
|
|
}
|