mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-06 21:59:54 -06:00
ENH: change how the generator is selected and what the last one used was
This commit is contained in:
@@ -179,7 +179,8 @@ CMakeSetupDialog::CMakeSetupDialog(const CMakeCommandLineInfo& cmdInfo,
|
||||
{
|
||||
this->m_WhereSource = cmdInfo.m_WhereSource;
|
||||
this->m_WhereBuild = cmdInfo.m_WhereBuild;
|
||||
this->m_GeneratorChoiceString = cmdInfo.m_GeneratorChoiceString;
|
||||
this->m_GeneratorDialog.m_GeneratorChoiceString =
|
||||
cmdInfo.m_GeneratorChoiceString;
|
||||
this->m_AdvancedValues = cmdInfo.m_AdvancedValues;
|
||||
}
|
||||
else
|
||||
@@ -187,7 +188,8 @@ CMakeSetupDialog::CMakeSetupDialog(const CMakeCommandLineInfo& cmdInfo,
|
||||
this->m_WhereSource = _T("");
|
||||
this->m_WhereBuild = _T("");
|
||||
this->m_AdvancedValues = FALSE;
|
||||
this->m_GeneratorChoiceString = cmdInfo.m_GeneratorChoiceString;
|
||||
this->m_GeneratorDialog.m_GeneratorChoiceString =
|
||||
cmdInfo.m_GeneratorChoiceString;
|
||||
this->ChangeDirectoriesFromFile((LPCTSTR)cmdInfo.m_LastUnknownParameter);
|
||||
}
|
||||
|
||||
@@ -219,12 +221,10 @@ void CMakeSetupDialog::DoDataExchange(CDataExchange* pDX)
|
||||
CDialog::DoDataExchange(pDX);
|
||||
//{{AFX_DATA_MAP(CMakeSetupDialog)
|
||||
DDX_Control(pDX, IDC_AdvancedValues, m_AdvancedValuesControl);
|
||||
DDX_Control(pDX, IDC_BuildForLabel, m_BuildForLabel);
|
||||
DDX_Control(pDX, IDC_BROWSE_SOURCE, m_BrowseSource);
|
||||
DDX_Control(pDX, IDC_BROWSE_BUILD, m_BrowseBuild);
|
||||
DDX_Control(pDX, IDC_DELETE_BUTTON, m_DeleteButton);
|
||||
DDX_Control(pDX, IDC_HELP_BUTTON, m_HelpButton);
|
||||
DDX_Control(pDX, IDC_Generator, m_GeneratorChoice);
|
||||
DDX_Control(pDX, IDC_OK, m_OKButton);
|
||||
DDX_Control(pDX, IDCANCEL, m_CancelButton);
|
||||
DDX_CBStringExact(pDX, IDC_WhereSource, m_WhereSource);
|
||||
@@ -236,7 +236,6 @@ void CMakeSetupDialog::DoDataExchange(CDataExchange* pDX)
|
||||
DDX_Control(pDX, IDC_MouseHelpCaption, m_MouseHelp);
|
||||
DDX_Control(pDX, IDC_PROGRESS, m_StatusDisplay);
|
||||
DDX_Control(pDX, IDC_BuildProjects, m_Configure);
|
||||
DDX_CBStringExact(pDX, IDC_Generator, m_GeneratorChoiceString);
|
||||
DDX_Check(pDX, IDC_AdvancedValues, m_AdvancedValues);
|
||||
//}}AFX_DATA_MAP
|
||||
}
|
||||
@@ -256,7 +255,6 @@ BEGIN_MESSAGE_MAP(CMakeSetupDialog, CDialog)
|
||||
ON_WM_SIZE()
|
||||
ON_WM_GETMINMAXINFO()
|
||||
ON_BN_CLICKED(IDC_OK, OnOk)
|
||||
ON_CBN_EDITCHANGE(IDC_Generator, OnEditchangeGenerator)
|
||||
ON_BN_CLICKED(IDC_DELETE_BUTTON, OnDeleteButton)
|
||||
ON_BN_CLICKED(IDC_HELP_BUTTON, OnHelpButton)
|
||||
ON_BN_CLICKED(IDC_AdvancedValues, OnAdvancedValues)
|
||||
@@ -317,53 +315,11 @@ BOOL CMakeSetupDialog::OnInitDialog()
|
||||
SetIcon(m_hIcon, FALSE); // Set small icon
|
||||
// Load source and build dirs from registry
|
||||
this->LoadFromRegistry();
|
||||
std::vector<std::string> names;
|
||||
this->m_CMakeInstance->GetRegisteredGenerators(names);
|
||||
for(std::vector<std::string>::iterator i = names.begin();
|
||||
i != names.end(); ++i)
|
||||
{
|
||||
m_GeneratorChoice.AddString(i->c_str());
|
||||
}
|
||||
if (m_GeneratorChoiceString == _T(""))
|
||||
{
|
||||
// check for vs7 in registry then decide what default to use
|
||||
std::string mp;
|
||||
mp = "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0\\Setup;Dbghelp_path]";
|
||||
cmSystemTools::ExpandRegistryValues(mp);
|
||||
if(mp != "/registry")
|
||||
{
|
||||
m_GeneratorChoiceString = "Visual Studio 8 2005";
|
||||
}
|
||||
else
|
||||
{
|
||||
mp = "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\7.1;InstallDir]";
|
||||
cmSystemTools::ExpandRegistryValues(mp);
|
||||
if (mp != "/registry")
|
||||
{
|
||||
m_GeneratorChoiceString = "Visual Studio 7 .NET 2003";
|
||||
}
|
||||
else
|
||||
{
|
||||
mp = "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\7.0;InstallDir]";
|
||||
cmSystemTools::ExpandRegistryValues(mp);
|
||||
if (mp != "/registry")
|
||||
{
|
||||
m_GeneratorChoiceString = "Visual Studio 7";
|
||||
}
|
||||
else
|
||||
{
|
||||
m_GeneratorChoiceString = "Visual Studio 6";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// try to load the cmake cache from disk
|
||||
this->LoadCacheFromDiskToGUI();
|
||||
m_WhereBuildControl.LimitText(2048);
|
||||
m_WhereSourceControl.LimitText(2048);
|
||||
m_GeneratorChoice.LimitText(2048);
|
||||
|
||||
// Set the version number
|
||||
char tmp[1024];
|
||||
@@ -686,7 +642,7 @@ void CMakeSetupDialog::RunCMake(bool generateProjectFiles)
|
||||
m_CMakeInstance->SetHomeOutputDirectory(m_WhereBuild);
|
||||
m_CMakeInstance->SetStartOutputDirectory(m_WhereBuild);
|
||||
m_CMakeInstance->SetGlobalGenerator(
|
||||
m_CMakeInstance->CreateGlobalGenerator(m_GeneratorChoiceString));
|
||||
m_CMakeInstance->CreateGlobalGenerator(m_GeneratorDialog.m_GeneratorChoiceString));
|
||||
m_CMakeInstance->SetCMakeCommand(m_PathToExecutable);
|
||||
m_CMakeInstance->LoadCache();
|
||||
if(m_CMakeInstance->Configure() != 0)
|
||||
@@ -714,10 +670,28 @@ void CMakeSetupDialog::RunCMake(bool generateProjectFiles)
|
||||
// Callback for build projects button
|
||||
void CMakeSetupDialog::OnConfigure()
|
||||
{
|
||||
// if(!m_GeneratorPicked)
|
||||
// {
|
||||
// // generator has not been picked add one here
|
||||
// }
|
||||
if(!m_GeneratorPicked)
|
||||
{
|
||||
m_GeneratorDialog.m_CMakeInstance = this->m_CMakeInstance;
|
||||
if(m_GeneratorDialog.DoModal() != IDOK)
|
||||
{
|
||||
return;
|
||||
}
|
||||
// save the generator choice in the registry
|
||||
HKEY hKey;
|
||||
DWORD dwDummy;
|
||||
|
||||
if(RegCreateKeyEx(HKEY_CURRENT_USER,
|
||||
m_RegistryKey,
|
||||
0, "", REG_OPTION_NON_VOLATILE, KEY_READ|KEY_WRITE,
|
||||
NULL, &hKey, &dwDummy) == ERROR_SUCCESS)
|
||||
{
|
||||
// save some values
|
||||
RegSetValueEx(hKey, _T("LastGenerator"), 0, REG_SZ,
|
||||
(CONST BYTE *)(const char *)m_GeneratorDialog.m_GeneratorChoiceString,
|
||||
m_GeneratorDialog.m_GeneratorChoiceString.GetLength());
|
||||
}
|
||||
}
|
||||
|
||||
// enable error messages each time configure is pressed
|
||||
cmSystemTools::EnableMessages();
|
||||
@@ -992,9 +966,9 @@ void CMakeSetupDialog::LoadCacheFromDiskToGUI()
|
||||
{
|
||||
m_GeneratorPicked = true;
|
||||
std::string curGen = it.GetValue();
|
||||
if(m_GeneratorChoiceString != curGen.c_str())
|
||||
if(m_GeneratorDialog.m_GeneratorChoiceString != curGen.c_str())
|
||||
{
|
||||
m_GeneratorChoiceString = curGen.c_str();
|
||||
m_GeneratorDialog.m_GeneratorChoiceString = curGen.c_str();
|
||||
this->UpdateData(FALSE);
|
||||
}
|
||||
}
|
||||
@@ -1049,18 +1023,6 @@ void CMakeSetupDialog::OnSize(UINT nType, int cx, int cy)
|
||||
0, 0,
|
||||
SWP_NOCOPYBITS |
|
||||
SWP_NOSIZE | SWP_NOZORDER);
|
||||
m_BuildForLabel.GetWindowRect(&cRect);
|
||||
this->ScreenToClient(&cRect);
|
||||
m_BuildForLabel.SetWindowPos(&wndTop, cRect.left + deltax,
|
||||
cRect.top,
|
||||
0, 0,
|
||||
SWP_NOCOPYBITS | SWP_NOSIZE | SWP_NOZORDER);
|
||||
m_GeneratorChoice.GetWindowRect(&cRect);
|
||||
this->ScreenToClient(&cRect);
|
||||
m_GeneratorChoice.SetWindowPos(&wndTop, cRect.left + deltax,
|
||||
cRect.top,
|
||||
0, 0,
|
||||
SWP_NOCOPYBITS | SWP_NOSIZE | SWP_NOZORDER);
|
||||
m_BrowseSource.GetWindowRect(&cRect);
|
||||
this->ScreenToClient(&cRect);
|
||||
m_BrowseSource.SetWindowPos(&wndTop, cRect.left + deltax,
|
||||
@@ -1196,13 +1158,6 @@ void CMakeSetupDialog::OnOk()
|
||||
}
|
||||
}
|
||||
|
||||
void CMakeSetupDialog::OnEditchangeGenerator()
|
||||
{
|
||||
// TODO: Add your control notification handler code here
|
||||
|
||||
}
|
||||
|
||||
|
||||
// Create a shortcut on the desktop with the current Source/Build dir.
|
||||
int CMakeSetupDialog::CreateShortcut()
|
||||
{
|
||||
@@ -1296,7 +1251,7 @@ int CMakeSetupDialog::CreateShortcut()
|
||||
}
|
||||
|
||||
// Set the arguments of the shortcut.
|
||||
CString args = " /H=\"" + m_WhereSource + "\" /B=\"" + m_WhereBuild + "\" /G=\"" + m_GeneratorChoiceString + "\" /A=\"" + (m_AdvancedValues ? "TRUE" : "FALSE") + "\"";
|
||||
CString args = " /H=\"" + m_WhereSource + "\" /B=\"" + m_WhereBuild + "\" /G=\"" + m_GeneratorDialog.m_GeneratorChoiceString + "\" /A=\"" + (m_AdvancedValues ? "TRUE" : "FALSE") + "\"";
|
||||
|
||||
hres = psl->SetArguments(args);
|
||||
|
||||
@@ -1445,7 +1400,7 @@ void CMakeSetupDialog::ChangeDirectoriesFromFile(const char* arg)
|
||||
path = ConvertToWindowsPath(it.GetValue());
|
||||
m_WhereSource = path.c_str();
|
||||
|
||||
m_GeneratorChoiceString = _T("");
|
||||
m_GeneratorDialog.m_GeneratorChoiceString = _T("");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user