You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
159 lines
5.0 KiB
159 lines
5.0 KiB
16 years ago
|
// CMakeSetupdialog.cpp : Defines the class behaviors for the application.
|
||
|
//
|
||
|
|
||
|
#include "stdafx.h"
|
||
|
#include "CMakeSetup.h"
|
||
|
#include "CMakeSetupDialog.h"
|
||
|
#include "CMakeCommandLineInfo.h"
|
||
|
#include "../cmDocumentation.h"
|
||
|
#include "../cmake.h"
|
||
|
#include "../cmSystemTools.h"
|
||
|
|
||
|
|
||
|
//----------------------------------------------------------------------------
|
||
|
static const char * cmDocumentationName[][3] =
|
||
|
{
|
||
|
{0,
|
||
|
" CMakeSetup - CMake Windows GUI.", 0},
|
||
|
{0,0,0}
|
||
|
};
|
||
|
|
||
|
//----------------------------------------------------------------------------
|
||
|
static const char * cmDocumentationUsage[][3] =
|
||
|
{
|
||
|
{0,
|
||
|
" CMakeSetup [options]\n"
|
||
|
" CMakeSetup [options] <path-to-source>\n"
|
||
|
" CMakeSetup [options] <path-to-existing-build>", 0},
|
||
|
{0,0,0}
|
||
|
};
|
||
|
|
||
|
//----------------------------------------------------------------------------
|
||
|
static const char * cmDocumentationDescription[][3] =
|
||
|
{
|
||
|
{0,
|
||
|
"The \"CMakeSetup\" executable is the CMake Windows GUI. Project "
|
||
|
"configuration settings may be specified interactively. "
|
||
|
"Brief instructions are provided at the bottom of the "
|
||
|
"window when the program is running.", 0},
|
||
|
CMAKE_STANDARD_INTRODUCTION,
|
||
|
{0,0,0}
|
||
|
};
|
||
|
|
||
|
//----------------------------------------------------------------------------
|
||
|
static const char * cmDocumentationOptions[][3] =
|
||
|
{
|
||
|
{"-A[on|off]", "Enable/disable display of advanced cache values.",
|
||
|
"There are two categories of CMake cache values: non-advanced and "
|
||
|
"advanced. Most users will not need to change the advanced options. "
|
||
|
"The CMakeSetup GUI contains a checkbox to enable/disable display of "
|
||
|
"advanced options. This command line flag changes its default setting."},
|
||
|
{0,0,0}
|
||
|
};
|
||
|
|
||
|
#ifdef _DEBUG
|
||
|
#define new DEBUG_NEW
|
||
|
#undef THIS_FILE
|
||
|
static char THIS_FILE[] = __FILE__;
|
||
|
#endif
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// CMakeSetup
|
||
|
|
||
|
BEGIN_MESSAGE_MAP(CMakeSetup, CWinApp)
|
||
|
//{{AFX_MSG_MAP(CMakeSetup)
|
||
|
// NOTE - the ClassWizard will add and remove mapping macros here.
|
||
|
// DO NOT EDIT what you see in these blocks of generated code!
|
||
|
//}}AFX_MSG
|
||
|
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
|
||
|
END_MESSAGE_MAP();
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// CMakeSetup construction
|
||
|
CMakeSetup::CMakeSetup()
|
||
|
{
|
||
|
// TODO: add construction code here,
|
||
|
// Place all significant initialization in InitInstance
|
||
|
}
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// The one and only CMakeSetup object
|
||
|
|
||
|
CMakeSetup theApp;
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// CMakeSetup initialization
|
||
|
|
||
|
BOOL CMakeSetup::InitInstance()
|
||
|
{
|
||
|
AfxEnableControlContainer();
|
||
|
|
||
|
// Standard initialization
|
||
|
// If you are not using these features and wish to reduce the size
|
||
|
// of your final executable, you should remove from the following
|
||
|
// the specific initialization routines you do not need.
|
||
|
#if _MFC_VER <= 0x421
|
||
|
#ifdef _AFXDLL
|
||
|
Enable3dControls(); // Call this when using MFC in a shared DLL
|
||
|
#else
|
||
|
Enable3dControlsStatic(); // Call this when linking to MFC statically
|
||
|
#endif
|
||
|
#endif
|
||
|
CMakeCommandLineInfo cmdInfo;
|
||
|
ParseCommandLine(cmdInfo);
|
||
|
cmSystemTools::FindExecutableDirectory(cmdInfo.GetArgV()[0]);
|
||
|
|
||
|
// Check for documentation options. If there are no arguments skip
|
||
|
// the check because the GUI should be displayed instead of showing
|
||
|
// usage in this case.
|
||
|
cmDocumentation doc;
|
||
|
if(cmdInfo.GetArgC() > 1 &&
|
||
|
doc.CheckOptions(cmdInfo.GetArgC(), cmdInfo.GetArgV()))
|
||
|
{
|
||
|
// Construct and print requested documentation.
|
||
|
cmake hcm;
|
||
|
hcm.AddCMakePaths();
|
||
|
doc.SetCMakeRoot(hcm.GetCacheDefinition("CMAKE_ROOT"));
|
||
|
std::vector<cmDocumentationEntry> commands;
|
||
|
std::vector<cmDocumentationEntry> compatCommands;
|
||
|
std::map<std::string,cmDocumentationSection *> propDocs;
|
||
|
|
||
|
std::vector<cmDocumentationEntry> generators;
|
||
|
hcm.GetCommandDocumentation(commands, true, false);
|
||
|
hcm.GetCommandDocumentation(compatCommands, false, true);
|
||
|
hcm.GetGeneratorDocumentation(generators);
|
||
|
hcm.GetPropertiesDocumentation(propDocs);
|
||
|
doc.SetName("cmake");
|
||
|
doc.SetSection("Name",cmDocumentationName);
|
||
|
doc.SetSection("Usage",cmDocumentationUsage);
|
||
|
doc.SetSection("Description",cmDocumentationDescription);
|
||
|
doc.AppendSection("Generators",generators);
|
||
|
doc.PrependSection("Options",cmDocumentationOptions);
|
||
|
doc.SetSection("Commands",commands);
|
||
|
doc.SetSection("Compatilbility Commands", compatCommands);
|
||
|
doc.SetSections(propDocs);
|
||
|
|
||
|
return (doc.PrintRequestedDocumentation(std::cout)? 0:1);
|
||
|
}
|
||
|
|
||
|
CMakeSetupDialog dlg(cmdInfo);
|
||
|
|
||
|
m_pMainWnd = &dlg;
|
||
|
INT_PTR nResponse = dlg.DoModal();
|
||
|
if (nResponse == IDOK)
|
||
|
{
|
||
|
// TODO: Place code here to handle when the dialog is
|
||
|
// dismissed with OK
|
||
|
}
|
||
|
else if (nResponse == IDCANCEL)
|
||
|
{
|
||
|
// TODO: Place code here to handle when the dialog is
|
||
|
// dismissed with Cancel
|
||
|
}
|
||
|
|
||
|
// Since the dialog has been closed, return FALSE so that we exit the
|
||
|
// application, rather than start the application's message pump.
|
||
|
return FALSE;
|
||
|
}
|