Merge topic 'MakeDefaultInstallComponentNameConfigurable'

b71e731 -add docs for ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME}
7ced073 make default install component name configurable
b6fba35 -strip trailing whitespace
This commit is contained in:
David Cole 2012-05-24 13:37:54 -04:00 committed by CMake Topic Stage
commit 59bdb879e8
9 changed files with 111 additions and 79 deletions

View File

@ -12,7 +12,7 @@
# (To distribute this file outside of CMake, substitute the full # (To distribute this file outside of CMake, substitute the full
# License text for the above reference.) # License text for the above reference.)
SET(CMAKE_SHARED_LIBRARY_C_FLAGS "") # -pic SET(CMAKE_SHARED_LIBRARY_C_FLAGS "") # -pic
SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-shared") # -shared SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-shared") # -shared
SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") # +s, flag for exe link to use shared lib SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") # +s, flag for exe link to use shared lib
SET(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "") # -rpath SET(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "") # -rpath
@ -42,7 +42,7 @@ SET (CMAKE_SKIP_RPATH "NO" CACHE BOOL
SET (CMAKE_SKIP_INSTALL_RPATH "NO" CACHE BOOL SET (CMAKE_SKIP_INSTALL_RPATH "NO" CACHE BOOL
"If set, runtime paths are not added when installing shared libraries, but are added when building.") "If set, runtime paths are not added when installing shared libraries, but are added when building.")
SET(CMAKE_VERBOSE_MAKEFILE FALSE CACHE BOOL "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo.") SET(CMAKE_VERBOSE_MAKEFILE FALSE CACHE BOOL "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo.")
IF(CMAKE_GENERATOR MATCHES "Makefiles") IF(CMAKE_GENERATOR MATCHES "Makefiles")
SET(CMAKE_COLOR_MAKEFILE ON CACHE BOOL SET(CMAKE_COLOR_MAKEFILE ON CACHE BOOL
@ -170,6 +170,10 @@ ELSE(CMAKE_HOST_UNIX)
SET(CMAKE_GENERIC_PROGRAM_FILES) SET(CMAKE_GENERIC_PROGRAM_FILES)
ENDIF(CMAKE_HOST_UNIX) ENDIF(CMAKE_HOST_UNIX)
# Set a variable which will be used as component name in install() commands
# where no COMPONENT has been given:
SET(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "Unspecified")
MARK_AS_ADVANCED( MARK_AS_ADVANCED(
CMAKE_SKIP_RPATH CMAKE_SKIP_RPATH
CMAKE_SKIP_INSTALL_RPATH CMAKE_SKIP_INSTALL_RPATH

View File

@ -522,6 +522,16 @@ void cmDocumentVariables::DefineVariables(cmake* cm)
false, false,
"Variables That Change Behavior"); "Variables That Change Behavior");
cm->DefineProperty
("CMAKE_INSTALL_DEFAULT_COMPONENT_NAME", cmProperty::VARIABLE,
"Default component used in install() commands.",
"If an install() command is used without the COMPONENT argument, "
"these files will be grouped into a default component. The name of this "
"default install component will be taken from this variable. "
"It defaults to \"Unspecified\". ",
false,
"Variables That Change Behavior");
cm->DefineProperty cm->DefineProperty
("CMAKE_FIND_LIBRARY_PREFIXES", cmProperty::VARIABLE, ("CMAKE_FIND_LIBRARY_PREFIXES", cmProperty::VARIABLE,
"Prefixes to prepend when looking for libraries.", "Prefixes to prepend when looking for libraries.",

View File

@ -23,25 +23,25 @@
static cmInstallTargetGenerator* CreateInstallTargetGenerator(cmTarget& target, static cmInstallTargetGenerator* CreateInstallTargetGenerator(cmTarget& target,
const cmInstallCommandArguments& args, bool impLib, bool forceOpt = false) const cmInstallCommandArguments& args, bool impLib, bool forceOpt = false)
{ {
return new cmInstallTargetGenerator(target, args.GetDestination().c_str(), return new cmInstallTargetGenerator(target, args.GetDestination().c_str(),
impLib, args.GetPermissions().c_str(), impLib, args.GetPermissions().c_str(),
args.GetConfigurations(), args.GetComponent().c_str(), args.GetConfigurations(), args.GetComponent().c_str(),
args.GetOptional() || forceOpt); args.GetOptional() || forceOpt);
} }
static cmInstallFilesGenerator* CreateInstallFilesGenerator( static cmInstallFilesGenerator* CreateInstallFilesGenerator(
const std::vector<std::string>& absFiles, const std::vector<std::string>& absFiles,
const cmInstallCommandArguments& args, bool programs) const cmInstallCommandArguments& args, bool programs)
{ {
return new cmInstallFilesGenerator(absFiles, args.GetDestination().c_str(), return new cmInstallFilesGenerator(absFiles, args.GetDestination().c_str(),
programs, args.GetPermissions().c_str(), programs, args.GetPermissions().c_str(),
args.GetConfigurations(), args.GetComponent().c_str(), args.GetConfigurations(), args.GetComponent().c_str(),
args.GetRename().c_str(), args.GetOptional()); args.GetRename().c_str(), args.GetOptional());
} }
// cmInstallCommand // cmInstallCommand
bool cmInstallCommand::InitialPass(std::vector<std::string> const& args, bool cmInstallCommand::InitialPass(std::vector<std::string> const& args,
cmExecutionStatus &) cmExecutionStatus &)
{ {
// Allow calling with no arguments so that arguments may be built up // Allow calling with no arguments so that arguments may be built up
@ -55,6 +55,13 @@ bool cmInstallCommand::InitialPass(std::vector<std::string> const& args,
this->Makefile->GetLocalGenerator() this->Makefile->GetLocalGenerator()
->GetGlobalGenerator()->EnableInstallTarget(); ->GetGlobalGenerator()->EnableInstallTarget();
this->DefaultComponentName = this->Makefile->GetSafeDefinition(
"CMAKE_INSTALL_DEFAULT_COMPONENT_NAME");
if (this->DefaultComponentName.empty())
{
this->DefaultComponentName = "Unspecified";
}
// Switch among the command modes. // Switch among the command modes.
if(args[0] == "SCRIPT") if(args[0] == "SCRIPT")
{ {
@ -95,7 +102,7 @@ bool cmInstallCommand::InitialPass(std::vector<std::string> const& args,
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
bool cmInstallCommand::HandleScriptMode(std::vector<std::string> const& args) bool cmInstallCommand::HandleScriptMode(std::vector<std::string> const& args)
{ {
std::string component("Unspecified"); std::string component = this->DefaultComponentName;
int componentCount = 0; int componentCount = 0;
bool doing_script = false; bool doing_script = false;
bool doing_code = false; bool doing_code = false;
@ -190,7 +197,7 @@ bool cmInstallCommand::HandleScriptMode(std::vector<std::string> const& args)
/*struct InstallPart /*struct InstallPart
{ {
InstallPart(cmCommandArgumentsHelper* helper, const char* key, InstallPart(cmCommandArgumentsHelper* helper, const char* key,
cmCommandArgumentGroup* group); cmCommandArgumentGroup* group);
cmCAStringVector argVector; cmCAStringVector argVector;
cmInstallCommandArguments args; cmInstallCommandArguments args;
@ -222,7 +229,7 @@ bool cmInstallCommand::HandleTargetsMode(std::vector<std::string> const& args)
// ARCHIVE, RUNTIME etc. (see above) // ARCHIVE, RUNTIME etc. (see above)
// These generic args also contain the targets and the export stuff // These generic args also contain the targets and the export stuff
std::vector<std::string> unknownArgs; std::vector<std::string> unknownArgs;
cmInstallCommandArguments genericArgs; cmInstallCommandArguments genericArgs(this->DefaultComponentName);
cmCAStringVector targetList(&genericArgs.Parser, "TARGETS"); cmCAStringVector targetList(&genericArgs.Parser, "TARGETS");
cmCAString exports(&genericArgs.Parser,"EXPORT", &genericArgs.ArgumentGroup); cmCAString exports(&genericArgs.Parser,"EXPORT", &genericArgs.ArgumentGroup);
targetList.Follows(0); targetList.Follows(0);
@ -230,16 +237,16 @@ bool cmInstallCommand::HandleTargetsMode(std::vector<std::string> const& args)
genericArgs.Parse(&genericArgVector.GetVector(), &unknownArgs); genericArgs.Parse(&genericArgVector.GetVector(), &unknownArgs);
bool success = genericArgs.Finalize(); bool success = genericArgs.Finalize();
cmInstallCommandArguments archiveArgs; cmInstallCommandArguments archiveArgs(this->DefaultComponentName);
cmInstallCommandArguments libraryArgs; cmInstallCommandArguments libraryArgs(this->DefaultComponentName);
cmInstallCommandArguments runtimeArgs; cmInstallCommandArguments runtimeArgs(this->DefaultComponentName);
cmInstallCommandArguments frameworkArgs; cmInstallCommandArguments frameworkArgs(this->DefaultComponentName);
cmInstallCommandArguments bundleArgs; cmInstallCommandArguments bundleArgs(this->DefaultComponentName);
cmInstallCommandArguments privateHeaderArgs; cmInstallCommandArguments privateHeaderArgs(this->DefaultComponentName);
cmInstallCommandArguments publicHeaderArgs; cmInstallCommandArguments publicHeaderArgs(this->DefaultComponentName);
cmInstallCommandArguments resourceArgs; cmInstallCommandArguments resourceArgs(this->DefaultComponentName);
// now parse the args for specific parts of the target (e.g. LIBRARY, // now parse the args for specific parts of the target (e.g. LIBRARY,
// RUNTIME, ARCHIVE etc. // RUNTIME, ARCHIVE etc.
archiveArgs.Parse (&archiveArgVector.GetVector(), &unknownArgs); archiveArgs.Parse (&archiveArgVector.GetVector(), &unknownArgs);
libraryArgs.Parse (&libraryArgVector.GetVector(), &unknownArgs); libraryArgs.Parse (&libraryArgVector.GetVector(), &unknownArgs);
@ -345,7 +352,7 @@ bool cmInstallCommand::HandleTargetsMode(std::vector<std::string> const& args)
this->Makefile->IsOn("CYGWIN") || this->Makefile->IsOn("CYGWIN") ||
this->Makefile->IsOn("MINGW")); this->Makefile->IsOn("MINGW"));
for(std::vector<std::string>::const_iterator for(std::vector<std::string>::const_iterator
targetIt=targetList.GetVector().begin(); targetIt=targetList.GetVector().begin();
targetIt!=targetList.GetVector().end(); targetIt!=targetList.GetVector().end();
++targetIt) ++targetIt)
@ -422,7 +429,7 @@ bool cmInstallCommand::HandleTargetsMode(std::vector<std::string> const& args)
case cmTarget::SHARED_LIBRARY: case cmTarget::SHARED_LIBRARY:
{ {
// Shared libraries are handled differently on DLL and non-DLL // Shared libraries are handled differently on DLL and non-DLL
// platforms. All windows platforms are DLL platforms including // platforms. All windows platforms are DLL platforms including
// cygwin. Currently no other platform is a DLL platform. // cygwin. Currently no other platform is a DLL platform.
if(dll_platform) if(dll_platform)
{ {
@ -436,13 +443,13 @@ bool cmInstallCommand::HandleTargetsMode(std::vector<std::string> const& args)
if(!archiveArgs.GetDestination().empty()) if(!archiveArgs.GetDestination().empty())
{ {
// The import library uses the ARCHIVE properties. // The import library uses the ARCHIVE properties.
archiveGenerator = CreateInstallTargetGenerator(target, archiveGenerator = CreateInstallTargetGenerator(target,
archiveArgs, true); archiveArgs, true);
} }
if(!runtimeArgs.GetDestination().empty()) if(!runtimeArgs.GetDestination().empty())
{ {
// The DLL uses the RUNTIME properties. // The DLL uses the RUNTIME properties.
runtimeGenerator = CreateInstallTargetGenerator(target, runtimeGenerator = CreateInstallTargetGenerator(target,
runtimeArgs, false); runtimeArgs, false);
} }
if ((archiveGenerator==0) && (runtimeGenerator==0)) if ((archiveGenerator==0) && (runtimeGenerator==0))
@ -467,7 +474,7 @@ bool cmInstallCommand::HandleTargetsMode(std::vector<std::string> const& args)
// Use the FRAMEWORK properties. // Use the FRAMEWORK properties.
if (!frameworkArgs.GetDestination().empty()) if (!frameworkArgs.GetDestination().empty())
{ {
frameworkGenerator = CreateInstallTargetGenerator(target, frameworkGenerator = CreateInstallTargetGenerator(target,
frameworkArgs, false); frameworkArgs, false);
} }
else else
@ -484,7 +491,7 @@ bool cmInstallCommand::HandleTargetsMode(std::vector<std::string> const& args)
// The shared library uses the LIBRARY properties. // The shared library uses the LIBRARY properties.
if (!libraryArgs.GetDestination().empty()) if (!libraryArgs.GetDestination().empty())
{ {
libraryGenerator = CreateInstallTargetGenerator(target, libraryGenerator = CreateInstallTargetGenerator(target,
libraryArgs, false); libraryArgs, false);
libraryGenerator->SetNamelinkMode(namelinkMode); libraryGenerator->SetNamelinkMode(namelinkMode);
namelinkOnly = namelinkOnly =
@ -507,7 +514,7 @@ bool cmInstallCommand::HandleTargetsMode(std::vector<std::string> const& args)
// Static libraries use ARCHIVE properties. // Static libraries use ARCHIVE properties.
if (!archiveArgs.GetDestination().empty()) if (!archiveArgs.GetDestination().empty())
{ {
archiveGenerator = CreateInstallTargetGenerator(target, archiveArgs, archiveGenerator = CreateInstallTargetGenerator(target, archiveArgs,
false); false);
} }
else else
@ -525,7 +532,7 @@ bool cmInstallCommand::HandleTargetsMode(std::vector<std::string> const& args)
// Modules use LIBRARY properties. // Modules use LIBRARY properties.
if (!libraryArgs.GetDestination().empty()) if (!libraryArgs.GetDestination().empty())
{ {
libraryGenerator = CreateInstallTargetGenerator(target, libraryArgs, libraryGenerator = CreateInstallTargetGenerator(target, libraryArgs,
false); false);
libraryGenerator->SetNamelinkMode(namelinkMode); libraryGenerator->SetNamelinkMode(namelinkMode);
namelinkOnly = namelinkOnly =
@ -548,7 +555,7 @@ bool cmInstallCommand::HandleTargetsMode(std::vector<std::string> const& args)
// Application bundles use the BUNDLE properties. // Application bundles use the BUNDLE properties.
if (!bundleArgs.GetDestination().empty()) if (!bundleArgs.GetDestination().empty())
{ {
bundleGenerator = CreateInstallTargetGenerator(target, bundleArgs, bundleGenerator = CreateInstallTargetGenerator(target, bundleArgs,
false); false);
} }
else if(!runtimeArgs.GetDestination().empty()) else if(!runtimeArgs.GetDestination().empty())
@ -580,7 +587,7 @@ bool cmInstallCommand::HandleTargetsMode(std::vector<std::string> const& args)
// Executables use the RUNTIME properties. // Executables use the RUNTIME properties.
if (!runtimeArgs.GetDestination().empty()) if (!runtimeArgs.GetDestination().empty())
{ {
runtimeGenerator = CreateInstallTargetGenerator(target, runtimeGenerator = CreateInstallTargetGenerator(target,
runtimeArgs, false); runtimeArgs, false);
} }
else else
@ -600,7 +607,7 @@ bool cmInstallCommand::HandleTargetsMode(std::vector<std::string> const& args)
target.IsExecutableWithExports()) target.IsExecutableWithExports())
{ {
// The import library uses the ARCHIVE properties. // The import library uses the ARCHIVE properties.
archiveGenerator = CreateInstallTargetGenerator(target, archiveGenerator = CreateInstallTargetGenerator(target,
archiveArgs, true, true); archiveArgs, true, true);
} }
} }
@ -710,7 +717,7 @@ bool cmInstallCommand::HandleTargetsMode(std::vector<std::string> const& args)
installsRuntime = installsRuntime || runtimeGenerator != 0; installsRuntime = installsRuntime || runtimeGenerator != 0;
installsFramework = installsFramework || frameworkGenerator != 0; installsFramework = installsFramework || frameworkGenerator != 0;
installsBundle = installsBundle || bundleGenerator != 0; installsBundle = installsBundle || bundleGenerator != 0;
installsPrivateHeader = installsPrivateHeader installsPrivateHeader = installsPrivateHeader
|| privateHeaderGenerator != 0; || privateHeaderGenerator != 0;
installsPublicHeader = installsPublicHeader || publicHeaderGenerator != 0; installsPublicHeader = installsPublicHeader || publicHeaderGenerator != 0;
installsResource = installsResource || resourceGenerator; installsResource = installsResource || resourceGenerator;
@ -729,7 +736,7 @@ bool cmInstallCommand::HandleTargetsMode(std::vector<std::string> const& args)
if(!exports.GetString().empty() && !namelinkOnly) if(!exports.GetString().empty() && !namelinkOnly)
{ {
this->Makefile->GetLocalGenerator()->GetGlobalGenerator() this->Makefile->GetLocalGenerator()->GetGlobalGenerator()
->AddTargetToExports(exports.GetCString(), &target, ->AddTargetToExports(exports.GetCString(), &target,
archiveGenerator, runtimeGenerator, archiveGenerator, runtimeGenerator,
libraryGenerator, frameworkGenerator, libraryGenerator, frameworkGenerator,
bundleGenerator, publicHeaderGenerator); bundleGenerator, publicHeaderGenerator);
@ -788,7 +795,7 @@ bool cmInstallCommand::HandleFilesMode(std::vector<std::string> const& args)
{ {
// This is the FILES mode. // This is the FILES mode.
bool programs = (args[0] == "PROGRAMS"); bool programs = (args[0] == "PROGRAMS");
cmInstallCommandArguments ica; cmInstallCommandArguments ica(this->DefaultComponentName);
cmCAStringVector files(&ica.Parser, programs ? "PROGRAMS" : "FILES"); cmCAStringVector files(&ica.Parser, programs ? "PROGRAMS" : "FILES");
files.Follows(0); files.Follows(0);
ica.ArgumentGroup.Follows(&files); ica.ArgumentGroup.Follows(&files);
@ -803,7 +810,7 @@ bool cmInstallCommand::HandleFilesMode(std::vector<std::string> const& args)
this->SetError(e.str().c_str()); this->SetError(e.str().c_str());
return false; return false;
} }
// Check if there is something to do. // Check if there is something to do.
if(files.GetVector().empty()) if(files.GetVector().empty())
{ {
@ -865,7 +872,7 @@ cmInstallCommand::HandleDirectoryMode(std::vector<std::string> const& args)
std::string permissions_file; std::string permissions_file;
std::string permissions_dir; std::string permissions_dir;
std::vector<std::string> configurations; std::vector<std::string> configurations;
std::string component = "Unspecified"; std::string component = this->DefaultComponentName;
std::string literal_args; std::string literal_args;
for(unsigned int i=1; i < args.size(); ++i) for(unsigned int i=1; i < args.size(); ++i)
{ {
@ -1179,7 +1186,7 @@ cmInstallCommand::HandleDirectoryMode(std::vector<std::string> const& args)
bool cmInstallCommand::HandleExportMode(std::vector<std::string> const& args) bool cmInstallCommand::HandleExportMode(std::vector<std::string> const& args)
{ {
// This is the EXPORT mode. // This is the EXPORT mode.
cmInstallCommandArguments ica; cmInstallCommandArguments ica(this->DefaultComponentName);
cmCAString exp(&ica.Parser, "EXPORT"); cmCAString exp(&ica.Parser, "EXPORT");
cmCAString name_space(&ica.Parser, "NAMESPACE", &ica.ArgumentGroup); cmCAString name_space(&ica.Parser, "NAMESPACE", &ica.ArgumentGroup);
cmCAString filename(&ica.Parser, "FILE", &ica.ArgumentGroup); cmCAString filename(&ica.Parser, "FILE", &ica.ArgumentGroup);

View File

@ -337,10 +337,12 @@ private:
bool HandleFilesMode(std::vector<std::string> const& args); bool HandleFilesMode(std::vector<std::string> const& args);
bool HandleDirectoryMode(std::vector<std::string> const& args); bool HandleDirectoryMode(std::vector<std::string> const& args);
bool HandleExportMode(std::vector<std::string> const& args); bool HandleExportMode(std::vector<std::string> const& args);
bool MakeFilesFullPath(const char* modeName, bool MakeFilesFullPath(const char* modeName,
const std::vector<std::string>& relFiles, const std::vector<std::string>& relFiles,
std::vector<std::string>& absFiles); std::vector<std::string>& absFiles);
bool CheckCMP0006(bool& failure); bool CheckCMP0006(bool& failure);
std::string DefaultComponentName;
}; };

View File

@ -23,7 +23,8 @@ const char* cmInstallCommandArguments::PermissionsTable[] =
const std::string cmInstallCommandArguments::EmptyString; const std::string cmInstallCommandArguments::EmptyString;
cmInstallCommandArguments::cmInstallCommandArguments() cmInstallCommandArguments::cmInstallCommandArguments(
const std::string& defaultComponent)
:Parser() :Parser()
,ArgumentGroup() ,ArgumentGroup()
,Destination (&Parser, "DESTINATION" , &ArgumentGroup) ,Destination (&Parser, "DESTINATION" , &ArgumentGroup)
@ -35,7 +36,9 @@ cmInstallCommandArguments::cmInstallCommandArguments()
,NamelinkOnly (&Parser, "NAMELINK_ONLY" , &ArgumentGroup) ,NamelinkOnly (&Parser, "NAMELINK_ONLY" , &ArgumentGroup)
,NamelinkSkip (&Parser, "NAMELINK_SKIP" , &ArgumentGroup) ,NamelinkSkip (&Parser, "NAMELINK_SKIP" , &ArgumentGroup)
,GenericArguments(0) ,GenericArguments(0)
{} {
this->Component.SetDefaultString(defaultComponent.c_str());
}
const std::string& cmInstallCommandArguments::GetDestination() const const std::string& cmInstallCommandArguments::GetDestination() const
{ {
@ -130,7 +133,7 @@ bool cmInstallCommandArguments::GetNamelinkSkip() const
return false; return false;
} }
const std::vector<std::string>& const std::vector<std::string>&
cmInstallCommandArguments::GetConfigurations() const cmInstallCommandArguments::GetConfigurations() const
{ {
if (!this->Configurations.GetVector().empty()) if (!this->Configurations.GetVector().empty())
@ -156,7 +159,7 @@ bool cmInstallCommandArguments::Finalize()
return true; return true;
} }
void cmInstallCommandArguments::Parse(const std::vector<std::string>* args, void cmInstallCommandArguments::Parse(const std::vector<std::string>* args,
std::vector<std::string>* unconsumedArgs) std::vector<std::string>* unconsumedArgs)
{ {
this->Parser.Parse(args, unconsumedArgs); this->Parser.Parse(args, unconsumedArgs);
@ -166,9 +169,9 @@ void cmInstallCommandArguments::Parse(const std::vector<std::string>* args,
bool cmInstallCommandArguments::CheckPermissions() bool cmInstallCommandArguments::CheckPermissions()
{ {
this->PermissionsString = ""; this->PermissionsString = "";
for(std::vector<std::string>::const_iterator for(std::vector<std::string>::const_iterator
permIt = this->Permissions.GetVector().begin(); permIt = this->Permissions.GetVector().begin();
permIt != this->Permissions.GetVector().end(); permIt != this->Permissions.GetVector().end();
++permIt) ++permIt)
{ {
if (!this->CheckPermissions(*permIt, this->PermissionsString)) if (!this->CheckPermissions(*permIt, this->PermissionsString))
@ -183,7 +186,7 @@ bool cmInstallCommandArguments::CheckPermissions(
const std::string& onePermission, std::string& permissions) const std::string& onePermission, std::string& permissions)
{ {
// Check the permission against the table. // Check the permission against the table.
for(const char** valid = cmInstallCommandArguments::PermissionsTable; for(const char** valid = cmInstallCommandArguments::PermissionsTable;
*valid; ++valid) *valid; ++valid)
{ {
if(onePermission == *valid) if(onePermission == *valid)

View File

@ -19,10 +19,10 @@
class cmInstallCommandArguments class cmInstallCommandArguments
{ {
public: public:
cmInstallCommandArguments(); cmInstallCommandArguments(const std::string& defaultComponent);
void SetGenericArguments(cmInstallCommandArguments* args) void SetGenericArguments(cmInstallCommandArguments* args)
{this->GenericArguments = args;} {this->GenericArguments = args;}
void Parse(const std::vector<std::string>* args, void Parse(const std::vector<std::string>* args,
std::vector<std::string>* unconsumedArgs); std::vector<std::string>* unconsumedArgs);
// Compute destination path.and check permissions // Compute destination path.and check permissions
@ -37,14 +37,15 @@ class cmInstallCommandArguments
bool GetNamelinkOnly() const; bool GetNamelinkOnly() const;
bool GetNamelinkSkip() const; bool GetNamelinkSkip() const;
// once HandleDirectoryMode() is also switched to using // once HandleDirectoryMode() is also switched to using
// cmInstallCommandArguments then these two functions can become non-static // cmInstallCommandArguments then these two functions can become non-static
// private member functions without arguments // private member functions without arguments
static bool CheckPermissions(const std::string& onePerm, static bool CheckPermissions(const std::string& onePerm,
std::string& perm); std::string& perm);
cmCommandArgumentsHelper Parser; cmCommandArgumentsHelper Parser;
cmCommandArgumentGroup ArgumentGroup; cmCommandArgumentGroup ArgumentGroup;
private: private:
cmInstallCommandArguments(); // disabled
cmCAString Destination; cmCAString Destination;
cmCAString Component; cmCAString Component;
cmCAString Rename; cmCAString Rename;

View File

@ -34,7 +34,7 @@ bool cmInstallFilesCommand
if((args.size() > 1) && (args[1] == "FILES")) if((args.size() > 1) && (args[1] == "FILES"))
{ {
this->IsFilesForm = true; this->IsFilesForm = true;
for(std::vector<std::string>::const_iterator s = args.begin()+2; for(std::vector<std::string>::const_iterator s = args.begin()+2;
s != args.end(); ++s) s != args.end(); ++s)
{ {
@ -53,45 +53,46 @@ bool cmInstallFilesCommand
this->FinalArgs.push_back(*s); this->FinalArgs.push_back(*s);
} }
} }
this->Makefile->GetLocalGenerator()->GetGlobalGenerator() this->Makefile->GetLocalGenerator()->GetGlobalGenerator()
->AddInstallComponent("Unspecified"); ->AddInstallComponent(this->Makefile->GetSafeDefinition(
"CMAKE_INSTALL_DEFAULT_COMPONENT_NAME"));
return true; return true;
} }
void cmInstallFilesCommand::FinalPass() void cmInstallFilesCommand::FinalPass()
{ {
// No final pass for "FILES" form of arguments. // No final pass for "FILES" form of arguments.
if(this->IsFilesForm) if(this->IsFilesForm)
{ {
return; return;
} }
std::string testf; std::string testf;
std::string ext = this->FinalArgs[0]; std::string ext = this->FinalArgs[0];
// two different options // two different options
if (this->FinalArgs.size() > 1) if (this->FinalArgs.size() > 1)
{ {
// now put the files into the list // now put the files into the list
std::vector<std::string>::iterator s = this->FinalArgs.begin(); std::vector<std::string>::iterator s = this->FinalArgs.begin();
++s; ++s;
// for each argument, get the files // for each argument, get the files
for (;s != this->FinalArgs.end(); ++s) for (;s != this->FinalArgs.end(); ++s)
{ {
// replace any variables // replace any variables
std::string temps = *s; std::string temps = *s;
if (cmSystemTools::GetFilenamePath(temps).size() > 0) if (cmSystemTools::GetFilenamePath(temps).size() > 0)
{ {
testf = cmSystemTools::GetFilenamePath(temps) + "/" + testf = cmSystemTools::GetFilenamePath(temps) + "/" +
cmSystemTools::GetFilenameWithoutLastExtension(temps) + ext; cmSystemTools::GetFilenameWithoutLastExtension(temps) + ext;
} }
else else
{ {
testf = cmSystemTools::GetFilenameWithoutLastExtension(temps) + ext; testf = cmSystemTools::GetFilenameWithoutLastExtension(temps) + ext;
} }
// add to the result // add to the result
this->Files.push_back(this->FindInstallSource(testf.c_str())); this->Files.push_back(this->FindInstallSource(testf.c_str()));
} }
@ -102,9 +103,9 @@ void cmInstallFilesCommand::FinalPass()
std::string regex = this->FinalArgs[0].c_str(); std::string regex = this->FinalArgs[0].c_str();
cmSystemTools::Glob(this->Makefile->GetCurrentDirectory(), cmSystemTools::Glob(this->Makefile->GetCurrentDirectory(),
regex.c_str(), files); regex.c_str(), files);
std::vector<std::string>::iterator s = files.begin(); std::vector<std::string>::iterator s = files.begin();
// for each argument, get the files // for each argument, get the files
for (;s != files.end(); ++s) for (;s != files.end(); ++s)
{ {
this->Files.push_back(this->FindInstallSource(s->c_str())); this->Files.push_back(this->FindInstallSource(s->c_str()));
@ -128,13 +129,14 @@ void cmInstallFilesCommand::CreateInstallGenerator() const
// Use a file install generator. // Use a file install generator.
const char* no_permissions = ""; const char* no_permissions = "";
const char* no_rename = ""; const char* no_rename = "";
const char* no_component = "Unspecified"; std::string no_component = this->Makefile->GetSafeDefinition(
"CMAKE_INSTALL_DEFAULT_COMPONENT_NAME");
std::vector<std::string> no_configurations; std::vector<std::string> no_configurations;
this->Makefile->AddInstallGenerator( this->Makefile->AddInstallGenerator(
new cmInstallFilesGenerator(this->Files, new cmInstallFilesGenerator(this->Files,
destination.c_str(), false, destination.c_str(), false,
no_permissions, no_configurations, no_permissions, no_configurations,
no_component, no_rename)); no_component.c_str(), no_rename));
} }
@ -151,7 +153,7 @@ std::string cmInstallFilesCommand::FindInstallSource(const char* name) const
// This is a full path. // This is a full path.
return name; return name;
} }
// This is a relative path. // This is a relative path.
std::string tb = this->Makefile->GetCurrentOutputDirectory(); std::string tb = this->Makefile->GetCurrentOutputDirectory();
tb += "/"; tb += "/";
@ -159,7 +161,7 @@ std::string cmInstallFilesCommand::FindInstallSource(const char* name) const
std::string ts = this->Makefile->GetCurrentDirectory(); std::string ts = this->Makefile->GetCurrentDirectory();
ts += "/"; ts += "/";
ts += name; ts += name;
if(cmSystemTools::FileExists(tb.c_str())) if(cmSystemTools::FileExists(tb.c_str()))
{ {
// The file exists in the binary tree. Use it. // The file exists in the binary tree. Use it.

View File

@ -31,26 +31,27 @@ bool cmInstallProgramsCommand
for (++s;s != args.end(); ++s) for (++s;s != args.end(); ++s)
{ {
this->FinalArgs.push_back(*s); this->FinalArgs.push_back(*s);
} }
this->Makefile->GetLocalGenerator()->GetGlobalGenerator() this->Makefile->GetLocalGenerator()->GetGlobalGenerator()
->AddInstallComponent("Unspecified"); ->AddInstallComponent(this->Makefile->GetSafeDefinition(
"CMAKE_INSTALL_DEFAULT_COMPONENT_NAME"));
return true; return true;
} }
void cmInstallProgramsCommand::FinalPass() void cmInstallProgramsCommand::FinalPass()
{ {
bool files_mode = false; bool files_mode = false;
if(!this->FinalArgs.empty() && this->FinalArgs[0] == "FILES") if(!this->FinalArgs.empty() && this->FinalArgs[0] == "FILES")
{ {
files_mode = true; files_mode = true;
} }
// two different options // two different options
if (this->FinalArgs.size() > 1 || files_mode) if (this->FinalArgs.size() > 1 || files_mode)
{ {
// for each argument, get the programs // for each argument, get the programs
std::vector<std::string>::iterator s = this->FinalArgs.begin(); std::vector<std::string>::iterator s = this->FinalArgs.begin();
if(files_mode) if(files_mode)
{ {
@ -68,9 +69,9 @@ void cmInstallProgramsCommand::FinalPass()
std::vector<std::string> programs; std::vector<std::string> programs;
cmSystemTools::Glob(this->Makefile->GetCurrentDirectory(), cmSystemTools::Glob(this->Makefile->GetCurrentDirectory(),
this->FinalArgs[0].c_str(), programs); this->FinalArgs[0].c_str(), programs);
std::vector<std::string>::iterator s = programs.begin(); std::vector<std::string>::iterator s = programs.begin();
// for each argument, get the programs // for each argument, get the programs
for (;s != programs.end(); ++s) for (;s != programs.end(); ++s)
{ {
this->Files.push_back(this->FindInstallSource(s->c_str())); this->Files.push_back(this->FindInstallSource(s->c_str()));
@ -89,13 +90,14 @@ void cmInstallProgramsCommand::FinalPass()
// Use a file install generator. // Use a file install generator.
const char* no_permissions = ""; const char* no_permissions = "";
const char* no_rename = ""; const char* no_rename = "";
const char* no_component = "Unspecified"; std::string no_component = this->Makefile->GetSafeDefinition(
"CMAKE_INSTALL_DEFAULT_COMPONENT_NAME");
std::vector<std::string> no_configurations; std::vector<std::string> no_configurations;
this->Makefile->AddInstallGenerator( this->Makefile->AddInstallGenerator(
new cmInstallFilesGenerator(this->Files, new cmInstallFilesGenerator(this->Files,
destination.c_str(), true, destination.c_str(), true,
no_permissions, no_configurations, no_permissions, no_configurations,
no_component, no_rename)); no_component.c_str(), no_rename));
} }
/** /**
@ -112,7 +114,7 @@ std::string cmInstallProgramsCommand
// This is a full path. // This is a full path.
return name; return name;
} }
// This is a relative path. // This is a relative path.
std::string tb = this->Makefile->GetCurrentOutputDirectory(); std::string tb = this->Makefile->GetCurrentOutputDirectory();
tb += "/"; tb += "/";
@ -120,7 +122,7 @@ std::string cmInstallProgramsCommand
std::string ts = this->Makefile->GetCurrentDirectory(); std::string ts = this->Makefile->GetCurrentDirectory();
ts += "/"; ts += "/";
ts += name; ts += name;
if(cmSystemTools::FileExists(tb.c_str())) if(cmSystemTools::FileExists(tb.c_str()))
{ {
// The file exists in the binary tree. Use it. // The file exists in the binary tree. Use it.

View File

@ -58,7 +58,8 @@ bool cmInstallTargetsCommand
} }
this->Makefile->GetLocalGenerator()->GetGlobalGenerator() this->Makefile->GetLocalGenerator()->GetGlobalGenerator()
->AddInstallComponent("Unspecified"); ->AddInstallComponent(this->Makefile->GetSafeDefinition(
"CMAKE_INSTALL_DEFAULT_COMPONENT_NAME"));
return true; return true;
} }