Bladeren bron

BUG: Added FILES mode to INSTALL_PROGRAMS command to make the single argument case unambiguous.

Brad King 20 jaren geleden
bovenliggende
commit
b636a0f20a
2 gewijzigde bestanden met toevoegingen van 19 en 5 verwijderingen
  1. 14 3
      Source/cmInstallProgramsCommand.cxx
  2. 5 2
      Source/cmInstallProgramsCommand.h

+ 14 - 3
Source/cmInstallProgramsCommand.cxx

@@ -45,13 +45,24 @@ void cmInstallProgramsCommand::FinalPass()
 {
   std::vector<std::string>& 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<std::string>::iterator s = m_FinalArgs.begin();
-         s != m_FinalArgs.end(); ++s)
+    std::vector<std::string>::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()));

+ 5 - 2
Source/cmInstallProgramsCommand.h

@@ -69,8 +69,11 @@ public:
   virtual const char* GetFullDocumentation()
     {
     return
-      "  INSTALL_PROGRAMS(<dir> file file ...)\n"
-      "Create rules to install the listed programs into the given directory.\n"
+      "  INSTALL_PROGRAMS(<dir> file1 file2 [file3 ...])\n"
+      "  INSTALL_PROGRAMS(<dir> 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(<dir> regexp)\n"
       "In the second form any program in the current source directory that "
       "matches the regular expression will be installed.\n"