ENH: Improved documentation. Also modified behavior of "cmake" to not configure a project in the current directory unless . is given.
This commit is contained in:
parent
3bba5f587e
commit
a5ea72df88
|
@ -51,6 +51,13 @@ static const cmDocumentationEntry cmDocumentationDescription[] =
|
||||||
{0,0,0}
|
{0,0,0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
static const cmDocumentationEntry cmDocumentationOptions[] =
|
||||||
|
{
|
||||||
|
CMAKE_STANDARD_OPTIONS_TABLE,
|
||||||
|
{0,0,0}
|
||||||
|
};
|
||||||
|
|
||||||
cmCursesForm* cmCursesForm::CurrentForm=0;
|
cmCursesForm* cmCursesForm::CurrentForm=0;
|
||||||
|
|
||||||
extern "C"
|
extern "C"
|
||||||
|
@ -94,7 +101,7 @@ int main(int argc, char** argv)
|
||||||
doc.SetNameSection(cmDocumentationName);
|
doc.SetNameSection(cmDocumentationName);
|
||||||
doc.SetUsageSection(cmDocumentationUsage);
|
doc.SetUsageSection(cmDocumentationUsage);
|
||||||
doc.SetDescriptionSection(cmDocumentationDescription);
|
doc.SetDescriptionSection(cmDocumentationDescription);
|
||||||
doc.SetOptionsSection(0);
|
doc.SetOptionsSection(cmDocumentationOptions);
|
||||||
doc.SetCommandsSection(&commands[0]);
|
doc.SetCommandsSection(&commands[0]);
|
||||||
doc.PrintDocumentation(ht, std::cout);
|
doc.PrintDocumentation(ht, std::cout);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -898,27 +898,6 @@ bool cmake::CacheVersionMatches()
|
||||||
// handle a command line invocation
|
// handle a command line invocation
|
||||||
int cmake::Run(const std::vector<std::string>& args)
|
int cmake::Run(const std::vector<std::string>& args)
|
||||||
{
|
{
|
||||||
// a quick check for args
|
|
||||||
if(args.size() == 1 && !cmSystemTools::FileExists("CMakeLists.txt"))
|
|
||||||
{
|
|
||||||
this->Usage(args[0].c_str());
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// look for obvious request for help
|
|
||||||
for(unsigned int i=1; i < args.size(); ++i)
|
|
||||||
{
|
|
||||||
std::string arg = args[i];
|
|
||||||
if(arg.find("-help",0) != std::string::npos ||
|
|
||||||
arg.find("--help",0) != std::string::npos ||
|
|
||||||
arg.find("/?",0) != std::string::npos ||
|
|
||||||
arg.find("-usage",0) != std::string::npos)
|
|
||||||
{
|
|
||||||
this->Usage(args[0].c_str());
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Process the arguments
|
// Process the arguments
|
||||||
this->SetArgs(args);
|
this->SetArgs(args);
|
||||||
|
|
||||||
|
@ -927,8 +906,9 @@ int cmake::Run(const std::vector<std::string>& args)
|
||||||
srcList += "/CMakeLists.txt";
|
srcList += "/CMakeLists.txt";
|
||||||
if(!cmSystemTools::FileExists(srcList.c_str()))
|
if(!cmSystemTools::FileExists(srcList.c_str()))
|
||||||
{
|
{
|
||||||
cmSystemTools::Error("The source directory does not appear to contain CMakeLists.txt\n");
|
cmSystemTools::Error(
|
||||||
this->Usage(args[0].c_str());
|
"The source directory does not appear to contain CMakeLists.txt.\n"
|
||||||
|
"Specify --help for usage.");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -272,3 +272,22 @@ private:
|
||||||
const char* m_CCEnvironment;
|
const char* m_CCEnvironment;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define CMAKE_STANDARD_OPTIONS_TABLE \
|
||||||
|
{"-C<initial-cache>", "Pre-load cmake cache from given file.", \
|
||||||
|
"When cmake is first run in an empty build tree, it creates a " \
|
||||||
|
"CMakeCache.txt file and populates it with customizable settings " \
|
||||||
|
"for the project. This option may be used to specify a file from " \
|
||||||
|
"which to load cache entries before the first pass through " \
|
||||||
|
"the project's cmake listfiles. The loaded entries take priority " \
|
||||||
|
"over the project's default values."}, \
|
||||||
|
{"-D<var>:<type>=<value>", "Create a cmake cache entry.", \
|
||||||
|
"When cmake is first run in an empty build tree, it creates a " \
|
||||||
|
"CMakeCache.txt file and populates it with customizable settings " \
|
||||||
|
"for the project. This option may be used to specify a setting " \
|
||||||
|
"that takes priority over the project's default value. The option " \
|
||||||
|
"may be repeated for as many cache entries as desired."}, \
|
||||||
|
{"-G<generator-name>", "Specify a makefile generator.", \
|
||||||
|
"CMake may support multiple native build systems on certain platforms. " \
|
||||||
|
"A makefile generator is responsible for generating a particular build " \
|
||||||
|
"system. Possible generator names are\n" \
|
||||||
|
" \"Unix Makefiles\" - Standard UNIX Makefiles"}
|
||||||
|
|
|
@ -48,7 +48,21 @@ static const cmDocumentationEntry cmDocumentationDescription[] =
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
static const cmDocumentationEntry cmDocumentationOptions[] =
|
static const cmDocumentationEntry cmDocumentationOptions[] =
|
||||||
{
|
{
|
||||||
{"-i", "Run in wizard mode.", 0},
|
CMAKE_STANDARD_OPTIONS_TABLE,
|
||||||
|
{"-i", "Run in wizard mode.",
|
||||||
|
"Wizard mode runs cmake interactively without a GUI. The user is "
|
||||||
|
"prompted to answer questions about the project configuration. "
|
||||||
|
"The answers are used to set cmake cache values."},
|
||||||
|
{0,0,0}
|
||||||
|
};
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
static const cmDocumentationEntry cmDocumentationNOTE[] =
|
||||||
|
{
|
||||||
|
{0,
|
||||||
|
"CMake no longer configures a project when run with no arguments. "
|
||||||
|
"In order to configure the project in the current directory, run\n"
|
||||||
|
" cmake .", 0},
|
||||||
{0,0,0}
|
{0,0,0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -71,6 +85,7 @@ int do_cmake(int ac, char** av)
|
||||||
cmDocumentation doc;
|
cmDocumentation doc;
|
||||||
if(cmDocumentation::Type ht = doc.CheckOptions(ac, av))
|
if(cmDocumentation::Type ht = doc.CheckOptions(ac, av))
|
||||||
{
|
{
|
||||||
|
// Construct and print requested documentation.
|
||||||
cmake hcm;
|
cmake hcm;
|
||||||
std::vector<cmDocumentationEntry> commands;
|
std::vector<cmDocumentationEntry> commands;
|
||||||
hcm.GetCommandDocumentation(commands);
|
hcm.GetCommandDocumentation(commands);
|
||||||
|
@ -80,6 +95,19 @@ int do_cmake(int ac, char** av)
|
||||||
doc.SetOptionsSection(cmDocumentationOptions);
|
doc.SetOptionsSection(cmDocumentationOptions);
|
||||||
doc.SetCommandsSection(&commands[0]);
|
doc.SetCommandsSection(&commands[0]);
|
||||||
doc.PrintDocumentation(ht, std::cout);
|
doc.PrintDocumentation(ht, std::cout);
|
||||||
|
|
||||||
|
// If we were run with no arguments, but a CMakeLists.txt file
|
||||||
|
// exists, the user may have been trying to use the old behavior
|
||||||
|
// of cmake to build a project in-source. Print a message
|
||||||
|
// explaining the change to standard error and return an error
|
||||||
|
// condition in case the program is running from a script.
|
||||||
|
if((ac == 1) && cmSystemTools::FileExists("CMakeLists.txt"))
|
||||||
|
{
|
||||||
|
doc.ClearSections();
|
||||||
|
doc.AddSection("NOTE", cmDocumentationNOTE);
|
||||||
|
doc.Print(cmDocumentation::UsageForm, std::cerr);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue