Răsfoiți Sursa

Merge topic 'wix-extra-sources'

2e6cadd CPackWiX: allow user supplied extra sources, objects and libraries
Brad King 12 ani în urmă
părinte
comite
69fd12583c

+ 14 - 0
Modules/CPackWIX.cmake

@@ -102,6 +102,20 @@
 # If this variable is not set, the default MSI template included with CMake will be used.
 #
 ##end
+##variable
+# CPACK_WIX_EXTRA_SOURCES - Extra WiX source files
+#
+# This variable provides an optional list of extra WiX source files (.wxs)
+# that should be compiled and linked. The full path to source files is required.
+#
+##end
+##variable
+# CPACK_WIX_EXTRA_OBJECTS - Extra WiX object files or libraries
+#
+# This variable provides an optional list of extra WiX object (.wixobj) and/or
+# WiX library (.wixlib) files. The full path to objects and libraries is required.
+#
+##end
 
 #=============================================================================
 # Copyright 2012 Kitware, Inc.

+ 28 - 0
Source/CPack/WiX/cmCPackWIXGenerator.cxx

@@ -190,6 +190,8 @@ bool cmCPackWIXGenerator::PackageFilesImpl()
     return false;
     }
 
+  AppendUserSuppliedExtraSources();
+
   std::stringstream objectFiles;
   for(size_t i = 0; i < wixSources.size(); ++i)
     {
@@ -206,9 +208,35 @@ bool cmCPackWIXGenerator::PackageFilesImpl()
     objectFiles << " " << QuotePath(objectFilename);
     }
 
+  AppendUserSuppliedExtraObjects(objectFiles);
+
   return RunLightCommand(objectFiles.str());
 }
 
+void cmCPackWIXGenerator::AppendUserSuppliedExtraSources()
+{
+  const char *cpackWixExtraSources = GetOption("CPACK_WIX_EXTRA_SOURCES");
+  if(!cpackWixExtraSources) return;
+
+  cmSystemTools::ExpandListArgument(cpackWixExtraSources, wixSources);
+}
+
+void cmCPackWIXGenerator::AppendUserSuppliedExtraObjects(std::ostream& stream)
+{
+  const char *cpackWixExtraObjects = GetOption("CPACK_WIX_EXTRA_OBJECTS");
+  if(!cpackWixExtraObjects) return;
+
+  std::vector<std::string> expandedExtraObjects;
+
+  cmSystemTools::ExpandListArgument(
+    cpackWixExtraObjects, expandedExtraObjects);
+
+  for(size_t i = 0; i < expandedExtraObjects.size(); ++i)
+    {
+      stream << " " << QuotePath(expandedExtraObjects[i]);
+    }
+}
+
 bool cmCPackWIXGenerator::CreateWiXVariablesIncludeFile()
 {
   std::string cpackTopLevel;

+ 4 - 0
Source/CPack/WiX/cmCPackWIXGenerator.h

@@ -71,6 +71,10 @@ private:
 
   bool CreateWiXSourceFiles();
 
+  void AppendUserSuppliedExtraSources();
+
+  void AppendUserSuppliedExtraObjects(std::ostream& stream);
+
   bool CreateLicenseFile();
 
   bool RunWiXCommand(const std::string& command);