summaryrefslogtreecommitdiffstats
path: root/Source/CTest/cmCTestBuildCommand.cxx
diff options
context:
space:
mode:
authorAndy Cedilnik <andy.cedilnik@kitware.com>2005-05-02 19:51:58 (GMT)
committerAndy Cedilnik <andy.cedilnik@kitware.com>2005-05-02 19:51:58 (GMT)
commiteb3857ce8381957aeb4d9f8dbee9ba0eb1f6549e (patch)
tree5998adb40a5d03b15d14c6a3e04899a30bad0dcc /Source/CTest/cmCTestBuildCommand.cxx
parente4af567bd224ffcac53d81e6d8492ca415f30ea4 (diff)
downloadCMake-eb3857ce8381957aeb4d9f8dbee9ba0eb1f6549e.zip
CMake-eb3857ce8381957aeb4d9f8dbee9ba0eb1f6549e.tar.gz
CMake-eb3857ce8381957aeb4d9f8dbee9ba0eb1f6549e.tar.bz2
ENH: Make ctest build command work
Diffstat (limited to 'Source/CTest/cmCTestBuildCommand.cxx')
-rw-r--r--Source/CTest/cmCTestBuildCommand.cxx39
1 files changed, 39 insertions, 0 deletions
diff --git a/Source/CTest/cmCTestBuildCommand.cxx b/Source/CTest/cmCTestBuildCommand.cxx
index e1c3d66..52c90e5 100644
--- a/Source/CTest/cmCTestBuildCommand.cxx
+++ b/Source/CTest/cmCTestBuildCommand.cxx
@@ -18,6 +18,8 @@
#include "cmCTest.h"
#include "cmCTestGenericHandler.h"
+#include "cmake.h"
+#include "cmGlobalGenerator.h"
bool cmCTestBuildCommand::InitialPass(
std::vector<std::string> const& args)
@@ -38,6 +40,43 @@ bool cmCTestBuildCommand::InitialPass(
this->SetError("internal CTest error. Cannot instantiate build handler");
return false;
}
+
+ const char* ctestBuildCommand = m_Makefile->GetDefinition("CTEST_BUILD_COMMAND");
+ if ( ctestBuildCommand && *ctestBuildCommand )
+ {
+ m_CTest->SetDartConfiguration("MakeCommand", ctestBuildCommand);
+ }
+ else
+ {
+ const char* cmakeGeneratorName = m_Makefile->GetDefinition("CTEST_CMAKE_GENERATOR");
+ const char* cmakeProjectName = m_Makefile->GetDefinition("CTEST_PROJECT_NAME");
+ const char* cmakeBuildConfiguration = m_Makefile->GetDefinition("CTEST_BUILD_CONFIGURATION");
+ if ( cmakeGeneratorName && *cmakeGeneratorName &&
+ cmakeProjectName && *cmakeProjectName )
+ {
+ if ( !cmakeBuildConfiguration )
+ {
+ cmakeBuildConfiguration = "Release";
+ }
+ cmGlobalGenerator* gen =
+ m_Makefile->GetCMakeInstance()->CreateGlobalGenerator(cmakeGeneratorName);
+ gen->FindMakeProgram(m_Makefile);
+ const char* cmakeMakeProgram = m_Makefile->GetDefinition("CMAKE_MAKE_PROGRAM");
+ std::cout << "CMake Make program is: " << cmakeMakeProgram << std::endl;
+ std::string buildCommand = gen->GenerateBuildCommand(cmakeMakeProgram, cmakeProjectName,
+ 0, cmakeBuildConfiguration, true);
+
+ m_CTest->SetDartConfiguration("MakeCommand", buildCommand.c_str());
+ }
+ else
+ {
+ cmOStringStream ostr;
+ ostr << "CTEST_BUILD_COMMAND or CTEST_CMAKE_GENERATOR not specified. Please specify the CTEST_CMAKE_GENERATOR if this is a CMake project, or specify the CTEST_BUILD_COMMAND for cmake or any other project.";
+ this->SetError(ostr.str().c_str());
+ return false;
+ }
+ }
+
int res = handler->ProcessHandler();
cmOStringStream str;
str << res;