| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 | // CMakeCommandLineInfo.cpp : command line arguments//#include "stdafx.h"#include "CMakeCommandLineInfo.h" #include "cmSystemTools.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic 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("");    // Find the path to the CMakeSetup executable.  char fname[4096];  ::GetModuleFileName(0, fname, 4096);  m_Argv0 = fname;  m_Argv.push_back(m_Argv0.c_str());} 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 paramvoid CMakeCommandLineInfo::ParseParam(LPCTSTR lpszParam, BOOL bFlag, BOOL bLast){  // Construct the full name of the argument.  cmStdString param = lpszParam;  cmStdString value;  if(bFlag)    {    // Since bFlag is set, either a - or a / was removed from the    // parameter value.  Assume it was a - unless the second character    // was a / which indicates a network path argument.    if(param.length() > 0 && param[0] == '/')      {      value = "/";      }    else      {      value = "-";      }    }  value += param;    // Add the argument and reset the argv table in case strings were  // moved.  m_Arguments.push_back(value);  m_Argv.clear();  m_Argv.push_back(m_Argv0.c_str());  for(unsigned int i=0; i < m_Arguments.size(); ++i)    {    m_Argv.push_back(m_Arguments[i].c_str());    }    // Look for known flags.  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':      {        std::string path = cmSystemTools::CollapseFullPath((const char*)value);        this->m_WhereBuild = path.c_str();        break;      }      case 'G':        this->m_GeneratorChoiceString = value;        break;      case 'H':      {        std::string path = cmSystemTools::CollapseFullPath((const char*)value);        this->m_WhereSource = path.c_str();        break;      }      }    }  // Call the base class to ensure proper command line processing  CCommandLineInfo::ParseParam(lpszParam, bFlag, bLast);}
 |