STYLE: create command documentation for ctest
I think some of the cmake commands should be removed from ctest if possible, like add_executable etc. Alex
This commit is contained in:
parent
d1c4a0bf9e
commit
e37f8e2964
|
@ -283,6 +283,46 @@ int cmCTestScriptHandler::ExecuteScript(const std::string& total_script_arg)
|
||||||
return retVal;
|
return retVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cmCTestScriptHandler::CreateCMake()
|
||||||
|
{
|
||||||
|
// create a cmake instance to read the configuration script
|
||||||
|
if (this->CMake)
|
||||||
|
{
|
||||||
|
delete this->CMake;
|
||||||
|
delete this->GlobalGenerator;
|
||||||
|
delete this->LocalGenerator;
|
||||||
|
}
|
||||||
|
this->CMake = new cmake;
|
||||||
|
this->CMake->AddCMakePaths(this->CTest->GetCTestExecutable());
|
||||||
|
this->GlobalGenerator = new cmGlobalGenerator;
|
||||||
|
this->GlobalGenerator->SetCMakeInstance(this->CMake);
|
||||||
|
|
||||||
|
this->LocalGenerator = this->GlobalGenerator->CreateLocalGenerator();
|
||||||
|
this->LocalGenerator->SetGlobalGenerator(this->GlobalGenerator);
|
||||||
|
this->Makefile = this->LocalGenerator->GetMakefile();
|
||||||
|
|
||||||
|
|
||||||
|
// add any ctest specific commands, probably should have common superclass
|
||||||
|
// for ctest commands to clean this up. If a couple more commands are
|
||||||
|
// created with the same format lets do that - ken
|
||||||
|
this->AddCTestCommand(new cmCTestBuildCommand);
|
||||||
|
this->AddCTestCommand(new cmCTestConfigureCommand);
|
||||||
|
this->AddCTestCommand(new cmCTestCoverageCommand);
|
||||||
|
this->AddCTestCommand(new cmCTestEmptyBinaryDirectoryCommand);
|
||||||
|
this->AddCTestCommand(new cmCTestMemCheckCommand);
|
||||||
|
this->AddCTestCommand(new cmCTestReadCustomFilesCommand);
|
||||||
|
this->AddCTestCommand(new cmCTestRunScriptCommand);
|
||||||
|
this->AddCTestCommand(new cmCTestSleepCommand);
|
||||||
|
this->AddCTestCommand(new cmCTestStartCommand);
|
||||||
|
this->AddCTestCommand(new cmCTestSubmitCommand);
|
||||||
|
this->AddCTestCommand(new cmCTestTestCommand);
|
||||||
|
this->AddCTestCommand(new cmCTestUpdateCommand);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmCTestScriptHandler::GetCommandDocumentation(std::vector<cmDocumentationEntry>& v) const
|
||||||
|
{
|
||||||
|
this->CMake->GetCommandDocumentation(v);
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
// this sets up some variables for the script to use, creates the required
|
// this sets up some variables for the script to use, creates the required
|
||||||
|
@ -307,22 +347,9 @@ int cmCTestScriptHandler::ReadInScript(const std::string& total_script_arg)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// create a cmake instance to read the configuration script
|
|
||||||
// read in the list file to fill the cache
|
// read in the list file to fill the cache
|
||||||
if (this->CMake)
|
// create a cmake instance to read the configuration script
|
||||||
{
|
this->CreateCMake();
|
||||||
delete this->CMake;
|
|
||||||
delete this->GlobalGenerator;
|
|
||||||
delete this->LocalGenerator;
|
|
||||||
}
|
|
||||||
this->CMake = new cmake;
|
|
||||||
this->CMake->AddCMakePaths(this->CTest->GetCTestExecutable());
|
|
||||||
this->GlobalGenerator = new cmGlobalGenerator;
|
|
||||||
this->GlobalGenerator->SetCMakeInstance(this->CMake);
|
|
||||||
|
|
||||||
this->LocalGenerator = this->GlobalGenerator->CreateLocalGenerator();
|
|
||||||
this->LocalGenerator->SetGlobalGenerator(this->GlobalGenerator);
|
|
||||||
this->Makefile = this->LocalGenerator->GetMakefile();
|
|
||||||
|
|
||||||
// set a variable with the path to the current script
|
// set a variable with the path to the current script
|
||||||
this->Makefile->AddDefinition("CTEST_SCRIPT_DIRECTORY",
|
this->Makefile->AddDefinition("CTEST_SCRIPT_DIRECTORY",
|
||||||
|
@ -336,22 +363,6 @@ int cmCTestScriptHandler::ReadInScript(const std::string& total_script_arg)
|
||||||
this->Makefile->AddDefinition("CTEST_RUN_CURRENT_SCRIPT", true);
|
this->Makefile->AddDefinition("CTEST_RUN_CURRENT_SCRIPT", true);
|
||||||
this->UpdateElapsedTime();
|
this->UpdateElapsedTime();
|
||||||
|
|
||||||
// add any ctest specific commands, probably should have common superclass
|
|
||||||
// for ctest commands to clean this up. If a couple more commands are
|
|
||||||
// created with the same format lets do that - ken
|
|
||||||
this->AddCTestCommand(new cmCTestBuildCommand);
|
|
||||||
this->AddCTestCommand(new cmCTestConfigureCommand);
|
|
||||||
this->AddCTestCommand(new cmCTestCoverageCommand);
|
|
||||||
this->AddCTestCommand(new cmCTestEmptyBinaryDirectoryCommand);
|
|
||||||
this->AddCTestCommand(new cmCTestMemCheckCommand);
|
|
||||||
this->AddCTestCommand(new cmCTestReadCustomFilesCommand);
|
|
||||||
this->AddCTestCommand(new cmCTestRunScriptCommand);
|
|
||||||
this->AddCTestCommand(new cmCTestSleepCommand);
|
|
||||||
this->AddCTestCommand(new cmCTestStartCommand);
|
|
||||||
this->AddCTestCommand(new cmCTestSubmitCommand);
|
|
||||||
this->AddCTestCommand(new cmCTestTestCommand);
|
|
||||||
this->AddCTestCommand(new cmCTestUpdateCommand);
|
|
||||||
|
|
||||||
// add the script arg if defined
|
// add the script arg if defined
|
||||||
if (script_arg.size())
|
if (script_arg.size())
|
||||||
{
|
{
|
||||||
|
|
|
@ -108,6 +108,9 @@ public:
|
||||||
|
|
||||||
void Initialize();
|
void Initialize();
|
||||||
|
|
||||||
|
void CreateCMake();
|
||||||
|
void GetCommandDocumentation(std::vector<cmDocumentationEntry>& v) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// reads in a script
|
// reads in a script
|
||||||
int ReadInScript(const std::string& total_script_arg);
|
int ReadInScript(const std::string& total_script_arg);
|
||||||
|
|
|
@ -301,28 +301,31 @@ bool cmDocumentation::PrintDocumentation(Type ht, std::ostream& os)
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool cmDocumentation::CreateModulesSection()
|
bool cmDocumentation::CreateModulesSection()
|
||||||
{
|
{
|
||||||
this->ModulesSection.Append(cmDocumentationModulesHeader[0]);
|
|
||||||
std::string cmakeModules = this->CMakeRoot;
|
std::string cmakeModules = this->CMakeRoot;
|
||||||
cmakeModules += "/Modules";
|
cmakeModules += "/Modules";
|
||||||
cmsys::Directory dir;
|
cmsys::Directory dir;
|
||||||
dir.Load(cmakeModules.c_str());
|
dir.Load(cmakeModules.c_str());
|
||||||
for(unsigned int i = 0; i < dir.GetNumberOfFiles(); ++i)
|
if (dir.GetNumberOfFiles() > 0)
|
||||||
{
|
{
|
||||||
std::string fname = dir.GetFile(i);
|
this->ModulesSection.Append(cmDocumentationModulesHeader[0]);
|
||||||
if(fname.length() > 6)
|
for(unsigned int i = 0; i < dir.GetNumberOfFiles(); ++i)
|
||||||
{
|
{
|
||||||
if(fname.substr(fname.length()-6, 6) == ".cmake")
|
std::string fname = dir.GetFile(i);
|
||||||
|
if(fname.length() > 6)
|
||||||
{
|
{
|
||||||
std::string moduleName = fname.substr(0, fname.length()-6);
|
if(fname.substr(fname.length()-6, 6) == ".cmake")
|
||||||
std::string path = cmakeModules;
|
{
|
||||||
path += "/";
|
std::string moduleName = fname.substr(0, fname.length()-6);
|
||||||
path += fname;
|
std::string path = cmakeModules;
|
||||||
this->CreateSingleModule(path.c_str(), moduleName.c_str());
|
path += "/";
|
||||||
|
path += fname;
|
||||||
|
this->CreateSingleModule(path.c_str(), moduleName.c_str());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
cmDocumentationEntry e = { 0, 0, 0 };
|
||||||
cmDocumentationEntry e = { 0, 0, 0 };
|
this->ModulesSection.Append(e);
|
||||||
this->ModulesSection.Append(e);
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include "cmake.h"
|
#include "cmake.h"
|
||||||
#include "cmDocumentation.h"
|
#include "cmDocumentation.h"
|
||||||
|
|
||||||
|
#include "CTest/cmCTestScriptHandler.h"
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
static const cmDocumentationEntry cmDocumentationName[] =
|
static const cmDocumentationEntry cmDocumentationName[] =
|
||||||
|
@ -236,11 +237,18 @@ int main (int argc, char *argv[])
|
||||||
if(doc.CheckOptions(argc, argv) || nocwd)
|
if(doc.CheckOptions(argc, argv) || nocwd)
|
||||||
{
|
{
|
||||||
// Construct and print requested documentation.
|
// Construct and print requested documentation.
|
||||||
|
std::vector<cmDocumentationEntry> commands;
|
||||||
|
cmCTestScriptHandler* ch =
|
||||||
|
static_cast<cmCTestScriptHandler*>(inst.GetHandler("script"));
|
||||||
|
ch->CreateCMake();
|
||||||
|
ch->GetCommandDocumentation(commands);
|
||||||
|
|
||||||
doc.SetName("ctest");
|
doc.SetName("ctest");
|
||||||
doc.SetNameSection(cmDocumentationName);
|
doc.SetNameSection(cmDocumentationName);
|
||||||
doc.SetUsageSection(cmDocumentationUsage);
|
doc.SetUsageSection(cmDocumentationUsage);
|
||||||
doc.SetDescriptionSection(cmDocumentationDescription);
|
doc.SetDescriptionSection(cmDocumentationDescription);
|
||||||
doc.SetOptionsSection(cmDocumentationOptions);
|
doc.SetOptionsSection(cmDocumentationOptions);
|
||||||
|
doc.SetCommandsSection(&commands[0]);
|
||||||
doc.SetSeeAlsoList(cmDocumentationSeeAlso);
|
doc.SetSeeAlsoList(cmDocumentationSeeAlso);
|
||||||
#ifdef cout
|
#ifdef cout
|
||||||
# undef cout
|
# undef cout
|
||||||
|
|
Loading…
Reference in New Issue