ENH: Add install(DIRECTORY) option 'OPTIONAL'

This adds the OPTIONAL option to the install(DIRECTORY) command.  It
tells the installation rule that it is not an error if the source
directory does not exist.  See issue #8394.
This commit is contained in:
Brad King
2009-02-24 11:41:40 -05:00
parent a79f8cd4c1
commit 1595b8e69e
6 changed files with 32 additions and 7 deletions
+18 -1
View File
@@ -855,6 +855,7 @@ cmInstallCommand::HandleDirectoryMode(std::vector<std::string> const& args)
DoingConfigurations, DoingComponent };
Doing doing = DoingDirs;
bool in_match_mode = false;
bool optional = false;
std::vector<std::string> dirs;
const char* destination = 0;
std::string permissions_file;
@@ -878,6 +879,21 @@ cmInstallCommand::HandleDirectoryMode(std::vector<std::string> const& args)
// Switch to setting the destination property.
doing = DoingDestination;
}
else if(args[i] == "OPTIONAL")
{
if(in_match_mode)
{
cmOStringStream e;
e << args[0] << " does not allow \""
<< args[i] << "\" after PATTERN or REGEX.";
this->SetError(e.str().c_str());
return false;
}
// Mark the rule as optional.
optional = true;
doing = DoingNone;
}
else if(args[i] == "PATTERN")
{
// Switch to a new pattern match rule.
@@ -1144,7 +1160,8 @@ cmInstallCommand::HandleDirectoryMode(std::vector<std::string> const& args)
permissions_dir.c_str(),
configurations,
component.c_str(),
literal_args.c_str()));
literal_args.c_str(),
optional));
// Tell the global generator about any installation component names
// specified.