ENH: Make ctest build command work
This commit is contained in:
parent
e4af567bd2
commit
eb3857ce83
|
@ -1,3 +1,4 @@
|
||||||
|
SET (CTEST_PROJECT_NAME "CMake")
|
||||||
SET (CTEST_NIGHTLY_START_TIME "21:00:00 EDT")
|
SET (CTEST_NIGHTLY_START_TIME "21:00:00 EDT")
|
||||||
SET (CTEST_DROP_SITE "public.kitware.com")
|
SET (CTEST_DROP_SITE "public.kitware.com")
|
||||||
SET (CTEST_DROP_LOCATION "/cgi-bin/HTTPUploadDartFile.cgi")
|
SET (CTEST_DROP_LOCATION "/cgi-bin/HTTPUploadDartFile.cgi")
|
||||||
|
|
|
@ -18,6 +18,8 @@
|
||||||
|
|
||||||
#include "cmCTest.h"
|
#include "cmCTest.h"
|
||||||
#include "cmCTestGenericHandler.h"
|
#include "cmCTestGenericHandler.h"
|
||||||
|
#include "cmake.h"
|
||||||
|
#include "cmGlobalGenerator.h"
|
||||||
|
|
||||||
bool cmCTestBuildCommand::InitialPass(
|
bool cmCTestBuildCommand::InitialPass(
|
||||||
std::vector<std::string> const& args)
|
std::vector<std::string> const& args)
|
||||||
|
@ -38,6 +40,43 @@ bool cmCTestBuildCommand::InitialPass(
|
||||||
this->SetError("internal CTest error. Cannot instantiate build handler");
|
this->SetError("internal CTest error. Cannot instantiate build handler");
|
||||||
return false;
|
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();
|
int res = handler->ProcessHandler();
|
||||||
cmOStringStream str;
|
cmOStringStream str;
|
||||||
str << res;
|
str << res;
|
||||||
|
|
|
@ -202,6 +202,7 @@ int cmCTestScriptHandler::ReadInScript(const std::string& total_script_arg)
|
||||||
delete m_LocalGenerator;
|
delete m_LocalGenerator;
|
||||||
}
|
}
|
||||||
m_CMake = new cmake;
|
m_CMake = new cmake;
|
||||||
|
m_CMake->AddCMakePaths(m_CTest->GetCTestExecutable());
|
||||||
m_GlobalGenerator = new cmGlobalGenerator;
|
m_GlobalGenerator = new cmGlobalGenerator;
|
||||||
m_GlobalGenerator->SetCMakeInstance(m_CMake);
|
m_GlobalGenerator->SetCMakeInstance(m_CMake);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue