فهرست منبع

Do not provide defaul value for CPACK_PACKAGE_DIRECTORY if found in config.

This fixes bug #0012906.
Eric NOULARD 13 سال پیش
والد
کامیت
05a8630ee6
2فایلهای تغییر یافته به همراه24 افزوده شده و 3 حذف شده
  1. 8 0
      Modules/CPack.cmake
  2. 16 3
      Source/CPack/cpack.cxx

+ 8 - 0
Modules/CPack.cmake

@@ -63,6 +63,14 @@
 ##end
 ##end
 #
 #
 ##variable
 ##variable
+#  CPACK_PACKAGE_DIRECTORY - The directory in which CPack is doing its
+#  packaging. If it is not set then this will default (internally) to the
+#  build dir. This variable may be defined in CPack config file or from
+#  the cpack command line option "-B". If set the command line option
+#  override the value found in the config file.
+##end
+#
+##variable
 #  CPACK_PACKAGE_VERSION_MAJOR - Package major Version
 #  CPACK_PACKAGE_VERSION_MAJOR - Package major Version
 ##end
 ##end
 #
 #

+ 16 - 3
Source/CPack/cpack.cxx

@@ -207,8 +207,7 @@ int main (int argc, char *argv[])
   std::string helpHTML;
   std::string helpHTML;
 
 
   std::string cpackProjectName;
   std::string cpackProjectName;
-  std::string cpackProjectDirectory
-    = cmsys::SystemTools::GetCurrentWorkingDirectory();
+  std::string cpackProjectDirectory;
   std::string cpackBuildConfig;
   std::string cpackBuildConfig;
   std::string cpackProjectVersion;
   std::string cpackProjectVersion;
   std::string cpackProjectPatch;
   std::string cpackProjectPatch;
@@ -370,10 +369,24 @@ int main (int argc, char *argv[])
       globalMF->AddDefinition("CPACK_PACKAGE_VENDOR",
       globalMF->AddDefinition("CPACK_PACKAGE_VENDOR",
         cpackProjectVendor.c_str());
         cpackProjectVendor.c_str());
       }
       }
+    // if this is not empty it has been set on the command line
+    // go for it. Command line override values set in config file.
     if ( !cpackProjectDirectory.empty() )
     if ( !cpackProjectDirectory.empty() )
       {
       {
       globalMF->AddDefinition("CPACK_PACKAGE_DIRECTORY",
       globalMF->AddDefinition("CPACK_PACKAGE_DIRECTORY",
-        cpackProjectDirectory.c_str());
+                              cpackProjectDirectory.c_str());
+      }
+    // The value has not been set on the command line
+    else
+      {
+      // get a default value (current working directory)
+      cpackProjectDirectory = cmsys::SystemTools::GetCurrentWorkingDirectory();
+      // use default value iff no value has been provided by the config file
+      if (!globalMF->IsSet("CPACK_PACKAGE_DIRECTORY"))
+        {
+        globalMF->AddDefinition("CPACK_PACKAGE_DIRECTORY",
+                                cpackProjectDirectory.c_str());
+        }
       }
       }
     if ( !cpackBuildConfig.empty() )
     if ( !cpackBuildConfig.empty() )
       {
       {