diff options
author | Andy Cedilnik <andy.cedilnik@kitware.com> | 2005-05-02 15:51:58 -0400 |
---|---|---|
committer | Andy Cedilnik <andy.cedilnik@kitware.com> | 2005-05-02 15:51:58 -0400 |
commit | eb3857ce8381957aeb4d9f8dbee9ba0eb1f6549e (patch) | |
tree | 5998adb40a5d03b15d14c6a3e04899a30bad0dcc | |
parent | e4af567bd224ffcac53d81e6d8492ca415f30ea4 (diff) | |
download | cmake-eb3857ce8381957aeb4d9f8dbee9ba0eb1f6549e.tar.gz |
ENH: Make ctest build command work
-rw-r--r-- | CTestConfig.cmake | 1 | ||||
-rw-r--r-- | Source/CTest/cmCTestBuildCommand.cxx | 39 | ||||
-rw-r--r-- | Source/CTest/cmCTestScriptHandler.cxx | 1 |
3 files changed, 41 insertions, 0 deletions
diff --git a/CTestConfig.cmake b/CTestConfig.cmake index 0623d67798..602e08bb11 100644 --- a/CTestConfig.cmake +++ b/CTestConfig.cmake @@ -1,3 +1,4 @@ +SET (CTEST_PROJECT_NAME "CMake") SET (CTEST_NIGHTLY_START_TIME "21:00:00 EDT") SET (CTEST_DROP_SITE "public.kitware.com") SET (CTEST_DROP_LOCATION "/cgi-bin/HTTPUploadDartFile.cgi") diff --git a/Source/CTest/cmCTestBuildCommand.cxx b/Source/CTest/cmCTestBuildCommand.cxx index e1c3d666ed..52c90e5e85 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; diff --git a/Source/CTest/cmCTestScriptHandler.cxx b/Source/CTest/cmCTestScriptHandler.cxx index 22e1146d4f..37034184f6 100644 --- a/Source/CTest/cmCTestScriptHandler.cxx +++ b/Source/CTest/cmCTestScriptHandler.cxx @@ -202,6 +202,7 @@ int cmCTestScriptHandler::ReadInScript(const std::string& total_script_arg) delete m_LocalGenerator; } m_CMake = new cmake; + m_CMake->AddCMakePaths(m_CTest->GetCTestExecutable()); m_GlobalGenerator = new cmGlobalGenerator; m_GlobalGenerator->SetCMakeInstance(m_CMake); |