ソースを参照

ENH: Added support for documentation options.

Brad King 22 年 前
コミット
5a1d6f2866
1 ファイル変更65 行追加2 行削除
  1. 65 2
      Source/MFCDialog/CMakeSetup.cpp

+ 65 - 2
Source/MFCDialog/CMakeSetup.cpp

@@ -5,6 +5,50 @@
 #include "CMakeSetup.h"
 #include "CMakeSetupDialog.h"
 #include "CMakeCommandLineInfo.h" 
+#include "../cmDocumentation.h"
+#include "../cmake.h"
+
+
+//----------------------------------------------------------------------------
+static const cmDocumentationEntry cmDocumentationName[] =
+{
+  {0,
+   "  CMakeSetup - CMake Windows GUI.", 0},
+  {0,0,0}
+};
+
+//----------------------------------------------------------------------------
+static const cmDocumentationEntry cmDocumentationUsage[] =
+{
+  {0,
+   "  CMakeSetup [options]\n"
+   "  CMakeSetup [options] <path-to-source>\n"
+   "  CMakeSetup [options] <path-to-build>", 0},
+  {0,0,0}
+};
+
+//----------------------------------------------------------------------------
+static const cmDocumentationEntry cmDocumentationDescription[] =
+{
+  {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 cmDocumentationEntry cmDocumentationOptions[] =
+{
+  {"-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
@@ -57,9 +101,28 @@ BOOL CMakeSetup::InitInstance()
 #endif
   CMakeCommandLineInfo cmdInfo;
   ParseCommandLine(cmdInfo);
-
+  
+  // Check for documentation options.
+  cmDocumentation doc;
+  if(doc.CheckOptions(cmdInfo.GetArgC(), cmdInfo.GetArgV()))
+    {
+    // Construct and print requested documentation.
+    cmake hcm;
+    std::vector<cmDocumentationEntry> commands;
+    std::vector<cmDocumentationEntry> generators;
+    hcm.GetCommandDocumentation(commands);
+    hcm.GetGeneratorDocumentation(generators);
+    doc.SetNameSection(cmDocumentationName);
+    doc.SetUsageSection(cmDocumentationUsage);
+    doc.SetDescriptionSection(cmDocumentationDescription);
+    doc.SetGeneratorsSection(&generators[0]);
+    doc.SetOptionsSection(cmDocumentationOptions);
+    doc.SetCommandsSection(&commands[0]);
+    return (doc.PrintRequestedDocumentation(std::cout)? 0:1);
+    }
+  
   CMakeSetupDialog dlg(cmdInfo);
-
+  
   m_pMainWnd = &dlg;
   INT_PTR nResponse = dlg.DoModal();
   if (nResponse == IDOK)