Browse Source

ENH: Add support for multiple build targets and start adding simple cpack tests

Andy Cedilnik 19 years ago
parent
commit
36d7f3990a

+ 34 - 15
Source/CTest/cmCTestBuildAndTestHandler.cxx

@@ -34,6 +34,9 @@ cmCTestBuildAndTestHandler::cmCTestBuildAndTestHandler()
 //----------------------------------------------------------------------
 void cmCTestBuildAndTestHandler::Initialize()
 {
+#undef cout
+  std::cout << "Erase the list" << std::endl; std::cout.flush();
+  m_BuildTargets.erase(m_BuildTargets.begin(), m_BuildTargets.end());
   this->Superclass::Initialize();
 }
 
@@ -179,25 +182,41 @@ int cmCTestBuildAndTestHandler::RunCMakeAndTest(std::string* outstring)
     }
 
   // do the build
-  std::string output;
-  retVal = cm.GetGlobalGenerator()->Build(
-    m_SourceDir.c_str(), m_BinaryDir.c_str(),
-    m_BuildProject.c_str(), m_BuildTarget.c_str(),
-    &output, m_BuildMakeProgram.c_str(),
-    m_CTest->GetConfigType().c_str(),!m_BuildNoClean);
-  
-  out << output;
+  std::vector<std::string>::iterator tarIt;
+#undef cout
+  if ( m_BuildTargets.size() == 0 )
+    {
+    m_BuildTargets.push_back("");
+    }
+  std::cout << "Execute targets: " << std::endl;
+  for ( tarIt = m_BuildTargets.begin(); tarIt != m_BuildTargets.end();
+    ++ tarIt )
+    {
+    std::cout << "Execute targets: " << tarIt->c_str() << std::endl;
+    std::cout.flush();
+    std::string output;
+    retVal = cm.GetGlobalGenerator()->Build(
+      m_SourceDir.c_str(), m_BinaryDir.c_str(),
+      m_BuildProject.c_str(), tarIt->c_str(),
+      &output, m_BuildMakeProgram.c_str(),
+      m_CTest->GetConfigType().c_str(),!m_BuildNoClean);
+
+    out << output;
+    // if the build failed then return
+    if (retVal)
+      {
+      if(outstring)
+        {
+        *outstring =  out.str();
+        }
+      return 1;
+      }
+    }
   if(outstring)
     {
     *outstring =  out.str();
     }
   
-  // if the build failed then return
-  if (retVal)
-    {
-    return 1;
-    }
-    
   // if not test was specified then we are done
   if (!m_TestCommand.size())
     {
@@ -390,7 +409,7 @@ int cmCTestBuildAndTestHandler::ProcessCommandLineArguments(
   if(currentArg.find("--build-target",0) == 0 && idx < allArgs.size() - 1)
     {
     idx++;
-    m_BuildTarget = allArgs[idx];
+    m_BuildTargets.push_back(allArgs[idx]);
     }
   if(currentArg.find("--build-nocmake",0) == 0)
     {

+ 1 - 1
Source/CTest/cmCTestBuildAndTestHandler.h

@@ -73,7 +73,7 @@ protected:
   std::string              m_BuildRunDir;
   std::string              m_ExecutableDirectory;
   std::vector<std::string> m_TestCommandArgs;
-  std::string              m_BuildTarget;
+  std::vector<std::string> m_BuildTargets;
   bool                     m_BuildNoCMake;
 };
 

+ 9 - 0
Tests/SimpleInstall/CMakeLists.txt

@@ -120,6 +120,14 @@ ELSE(CMAKE_CONFIGURATION_TYPES)
   SET(SI_CONFIG)
 ENDIF(CMAKE_CONFIGURATION_TYPES)
 
+# Dummy test of CPack
+SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Test of packaging with cpack")
+SET(CPACK_PACKAGE_VENDOR "Kitware")
+SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/foo.h")
+
+SET(CPACK_PACKAGE_EXECUTABLES "SimpleInstall" "Simple Install")
+INCLUDE(CPack)
+
 ADD_CUSTOM_COMMAND(
   TARGET ${install_target}
   POST_BUILD
@@ -133,5 +141,6 @@ ADD_CUSTOM_COMMAND(
        --build-makeprogram ${CMAKE_MAKE_PROGRAM}
        --build-noclean
        --build-target install
+       --build-target package
   COMMENT "Install Project"
   )

+ 9 - 0
Tests/SimpleInstallS2/CMakeLists.txt

@@ -120,6 +120,14 @@ ELSE(CMAKE_CONFIGURATION_TYPES)
   SET(SI_CONFIG)
 ENDIF(CMAKE_CONFIGURATION_TYPES)
 
+# Dummy test of CPack
+SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Test of packaging with cpack")
+SET(CPACK_PACKAGE_VENDOR "Kitware")
+SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/foo.h")
+
+SET(CPACK_PACKAGE_EXECUTABLES "SimpleInstall" "Simple Install")
+INCLUDE(CPack)
+
 ADD_CUSTOM_COMMAND(
   TARGET ${install_target}
   POST_BUILD
@@ -133,5 +141,6 @@ ADD_CUSTOM_COMMAND(
        --build-makeprogram ${CMAKE_MAKE_PROGRAM}
        --build-noclean
        --build-target install
+       --build-target package
   COMMENT "Install Project"
   )