ENH: Added optional component list to the REQUIRED option of the FIND_PACKAGE command. This addresses bug#2771.
This commit is contained in:
parent
194b1b1e38
commit
9f625beab6
@ -55,3 +55,21 @@ To have a .cmake file in this directory NOT show up in the
|
|||||||
modules documentation, you should start the file with a blank
|
modules documentation, you should start the file with a blank
|
||||||
line.
|
line.
|
||||||
|
|
||||||
|
A FindXXX.cmake module will typically be loaded by the command
|
||||||
|
|
||||||
|
FIND_PACKAGE(XXX [QUIET] [REQUIRED [components...]])
|
||||||
|
|
||||||
|
If the QUIET option is given to the command it will set the variable
|
||||||
|
XXX_FIND_QUIETLY to true before loading the FindXXX.cmake module. If
|
||||||
|
this variable is set the module should not complain about not being
|
||||||
|
able to find the package and should never issue a FATAL_ERROR. If the
|
||||||
|
REQUIRED option is given to the command it will set the variable
|
||||||
|
XXX_FIND_REQUIRED to true before loading the FindXXX.cmake module. If
|
||||||
|
this variable is set the module should issue a FATAL_ERROR if the
|
||||||
|
package cannot be found. For each package-specific component, say
|
||||||
|
YYY, listed after the REQUIRED option a variable XXX_FIND_REQUIRED_YYY
|
||||||
|
to true. This can be used by the FindXXX.cmake module to determine
|
||||||
|
which sub-components of the package must be found. If neither the
|
||||||
|
QUIET nor REQUIRED options are given then the FindXXX.cmake module
|
||||||
|
should look for the package and complain without error if the module
|
||||||
|
is not found.
|
||||||
|
@ -75,6 +75,11 @@ bool cmFindPackageCommand::InitialPass(std::vector<std::string> const& args)
|
|||||||
else if(args[i] == "REQUIRED")
|
else if(args[i] == "REQUIRED")
|
||||||
{
|
{
|
||||||
required = true;
|
required = true;
|
||||||
|
while (++i < args.size() && args[i] != "QUIET")
|
||||||
|
{
|
||||||
|
std::string req_var = Name + "_FIND_REQUIRED_" + args[i];
|
||||||
|
m_Makefile->AddDefinition(req_var.c_str(), "1");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -65,7 +65,8 @@ public:
|
|||||||
virtual const char* GetFullDocumentation()
|
virtual const char* GetFullDocumentation()
|
||||||
{
|
{
|
||||||
return
|
return
|
||||||
" FIND_PACKAGE(<name> [major.minor] [QUIET] [REQUIRED])\n"
|
" FIND_PACKAGE(<name> [major.minor] [QUIET]\n"
|
||||||
|
" [REQUIRED [componets...]])\n"
|
||||||
"Finds and loads settings from an external project. <name>_FOUND will "
|
"Finds and loads settings from an external project. <name>_FOUND will "
|
||||||
"be set to indicate whether the package was found. Settings that "
|
"be set to indicate whether the package was found. Settings that "
|
||||||
"can be used when <name>_FOUND is true are package-specific. The "
|
"can be used when <name>_FOUND is true are package-specific. The "
|
||||||
@ -83,7 +84,9 @@ public:
|
|||||||
"argument is specified. If <name>_DIR has been set to a directory "
|
"argument is specified. If <name>_DIR has been set to a directory "
|
||||||
"not containing a \"<name>Config.cmake\" file, an error is always "
|
"not containing a \"<name>Config.cmake\" file, an error is always "
|
||||||
"generated. If REQUIRED is specified and the package is not found, "
|
"generated. If REQUIRED is specified and the package is not found, "
|
||||||
"a FATAL_ERROR is generated and the configure step stops executing.";
|
"a FATAL_ERROR is generated and the configure step stops executing."
|
||||||
|
" A package-specific list of components may be listed after the "
|
||||||
|
"REQUIRED option.";
|
||||||
}
|
}
|
||||||
|
|
||||||
cmTypeMacro(cmFindPackageCommand, cmCommand);
|
cmTypeMacro(cmFindPackageCommand, cmCommand);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user