ENH: Added construction of original command line in argc/argv style.

This commit is contained in:
Brad King 2003-07-23 17:31:25 -04:00
parent 6849cbdfcb
commit ae84581f86
2 changed files with 34 additions and 1 deletions

View File

@ -20,6 +20,11 @@ CMakeCommandLineInfo::CMakeCommandLineInfo()
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;
}
CMakeCommandLineInfo::~CMakeCommandLineInfo()
@ -51,6 +56,25 @@ int CMakeCommandLineInfo::GetBoolValue(const CString& v) {
void CMakeCommandLineInfo::ParseParam(LPCTSTR lpszParam, BOOL bFlag, BOOL bLast)
{
// Construct the full name of the argument.
cmStdString value;
if(bFlag)
{
value = "-";
}
value += lpszParam;
// 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;

View File

@ -28,6 +28,8 @@
#error include 'stdafx.h' before including this file for PCH
#endif
#include "../cmStandardIncludes.h"
///////////////////////////////////////////////////////////////
// CMakeCommandLineInfo:
// See CMakeCommandLineInfo.cpp for the implementation of this class
@ -46,7 +48,14 @@ public:
BOOL m_AdvancedValues;
CString m_GeneratorChoiceString;
CString m_LastUnknownParameter;
int GetArgC() { return static_cast<int>(m_Argv.size()); }
const char*const* GetArgV() { return &*m_Argv.begin(); }
std::string m_Argv0;
std::vector<cmStdString> m_Arguments;
std::vector<const char*> m_Argv;
// Operations
public:
void ParseParam(const TCHAR* pszParam, BOOL bFlag, BOOL bLast);