From b636a0f20aa9f94940acd109e3717ef79730d168 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 1 Mar 2005 12:13:38 -0500 Subject: BUG: Added FILES mode to INSTALL_PROGRAMS command to make the single argument case unambiguous. --- Source/cmInstallProgramsCommand.cxx | 17 ++++++++++++++--- Source/cmInstallProgramsCommand.h | 7 +++++-- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/Source/cmInstallProgramsCommand.cxx b/Source/cmInstallProgramsCommand.cxx index e1645c7..0489a74 100644 --- a/Source/cmInstallProgramsCommand.cxx +++ b/Source/cmInstallProgramsCommand.cxx @@ -45,13 +45,24 @@ void cmInstallProgramsCommand::FinalPass() { std::vector& targetSourceLists = m_Makefile->GetTargets()[m_TargetName].GetSourceLists(); + + bool files_mode = false; + if(!m_FinalArgs.empty() && m_FinalArgs[0] == "FILES") + { + files_mode = true; + } // two different options - if (m_FinalArgs.size() > 1) + if (m_FinalArgs.size() > 1 || files_mode) { // for each argument, get the programs - for (std::vector::iterator s = m_FinalArgs.begin(); - s != m_FinalArgs.end(); ++s) + std::vector::iterator s = m_FinalArgs.begin(); + if(files_mode) + { + // Skip the FILES argument in files mode. + ++s; + } + for(;s != m_FinalArgs.end(); ++s) { // add to the result targetSourceLists.push_back(this->FindInstallSource(s->c_str())); diff --git a/Source/cmInstallProgramsCommand.h b/Source/cmInstallProgramsCommand.h index b14405e..7aff27f 100644 --- a/Source/cmInstallProgramsCommand.h +++ b/Source/cmInstallProgramsCommand.h @@ -69,8 +69,11 @@ public: virtual const char* GetFullDocumentation() { return - " INSTALL_PROGRAMS( file file ...)\n" - "Create rules to install the listed programs into the given directory.\n" + " INSTALL_PROGRAMS( file1 file2 [file3 ...])\n" + " INSTALL_PROGRAMS( FILES file1 [file2 ...])\n" + "Create rules to install the listed programs into the given directory. " + "Use the FILES argument to guarantee that the file list version of " + "the command will be used even when there is only one argument.\n" " INSTALL_PROGRAMS( regexp)\n" "In the second form any program in the current source directory that " "matches the regular expression will be installed.\n" -- cgit v0.12