diff options
author | Brad King <brad.king@kitware.com> | 2012-12-10 21:53:56 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2013-02-07 16:08:32 (GMT) |
commit | e3841cf4a275a65ea6306e980da7dfef78a8c57d (patch) | |
tree | ae2b6f839780130f869a20b23df356251167868b | |
parent | f980a8049522782779b3a721c37f976de1e38dcc (diff) | |
download | CMake-e3841cf4a275a65ea6306e980da7dfef78a8c57d.zip CMake-e3841cf4a275a65ea6306e980da7dfef78a8c57d.tar.gz CMake-e3841cf4a275a65ea6306e980da7dfef78a8c57d.tar.bz2 |
CTest: Add options to set generator toolset
The ctest_configure command already reads the CTEST_CMAKE_GENERATOR
variable to get the value for the cmake -G option. Read new variable
CTEST_CMAKE_GENERATOR_TOOLSET for -T.
The "ctest --build-and-test" mode already has "--build-generator" to
specify the -G option to CMake. Add a "--build-generator-toolset" option
to specify the -T value.
-rw-r--r-- | Source/CTest/cmCTestBuildAndTestHandler.cxx | 24 | ||||
-rw-r--r-- | Source/CTest/cmCTestBuildAndTestHandler.h | 1 | ||||
-rw-r--r-- | Source/CTest/cmCTestConfigureCommand.cxx | 9 | ||||
-rw-r--r-- | Source/ctest.cxx | 1 |
4 files changed, 31 insertions, 4 deletions
diff --git a/Source/CTest/cmCTestBuildAndTestHandler.cxx b/Source/CTest/cmCTestBuildAndTestHandler.cxx index 554efb5..4fa3c53 100644 --- a/Source/CTest/cmCTestBuildAndTestHandler.cxx +++ b/Source/CTest/cmCTestBuildAndTestHandler.cxx @@ -67,6 +67,12 @@ int cmCTestBuildAndTestHandler::RunCMake(std::string* outstring, generator += this->BuildGenerator; args.push_back(generator); } + if(this->BuildGeneratorToolset.size()) + { + std::string toolset = "-T"; + toolset += this->BuildGeneratorToolset; + args.push_back(toolset); + } const char* config = 0; if ( this->CTest->GetConfigType().size() > 0 ) @@ -229,10 +235,14 @@ int cmCTestBuildAndTestHandler::RunCMakeAndTest(std::string* outstring) // should we cmake? cmake cm; cm.SetProgressCallback(CMakeProgressCallback, &cmakeOutString); - cm.SetGlobalGenerator(cm.CreateGlobalGenerator( - this->BuildGenerator.c_str())); - if(!this->BuildNoCMake) + if(this->BuildNoCMake) + { + cm.SetGlobalGenerator(cm.CreateGlobalGenerator( + this->BuildGenerator.c_str())); + cm.SetGeneratorToolset(this->BuildGeneratorToolset); + } + else { // do the cmake step, no timeout here since it is not a sub process if (this->RunCMake(outstring,out,cmakeOutString,cwd,&cm)) @@ -466,11 +476,17 @@ int cmCTestBuildAndTestHandler::ProcessCommandLineArguments( idx++; this->Timeout = atof(allArgs[idx].c_str()); } - if(currentArg.find("--build-generator",0) == 0 && idx < allArgs.size() - 1) + if(currentArg == "--build-generator" && idx < allArgs.size() - 1) { idx++; this->BuildGenerator = allArgs[idx]; } + if(currentArg == "--build-generator-toolset" && + idx < allArgs.size() - 1) + { + idx++; + this->BuildGeneratorToolset = allArgs[idx]; + } if(currentArg.find("--build-project",0) == 0 && idx < allArgs.size() - 1) { idx++; diff --git a/Source/CTest/cmCTestBuildAndTestHandler.h b/Source/CTest/cmCTestBuildAndTestHandler.h index 9029600..ca50c64 100644 --- a/Source/CTest/cmCTestBuildAndTestHandler.h +++ b/Source/CTest/cmCTestBuildAndTestHandler.h @@ -57,6 +57,7 @@ protected: cmStdString Output; std::string BuildGenerator; + std::string BuildGeneratorToolset; std::vector<std::string> BuildOptions; bool BuildTwoConfig; std::string BuildMakeProgram; diff --git a/Source/CTest/cmCTestConfigureCommand.cxx b/Source/CTest/cmCTestConfigureCommand.cxx index 7a99ddf..d6d39a9 100644 --- a/Source/CTest/cmCTestConfigureCommand.cxx +++ b/Source/CTest/cmCTestConfigureCommand.cxx @@ -144,6 +144,15 @@ cmCTestGenericHandler* cmCTestConfigureCommand::InitializeHandler() cmakeConfigureCommand += cmakeGeneratorName; cmakeConfigureCommand += "\""; + const char* cmakeGeneratorToolset = + this->Makefile->GetDefinition("CTEST_CMAKE_GENERATOR_TOOLSET"); + if(cmakeGeneratorToolset && *cmakeGeneratorToolset) + { + cmakeConfigureCommand += " \"-T"; + cmakeConfigureCommand += cmakeGeneratorToolset; + cmakeConfigureCommand += "\""; + } + cmakeConfigureCommand += " \""; cmakeConfigureCommand += source_dir; cmakeConfigureCommand += "\""; diff --git a/Source/ctest.cxx b/Source/ctest.cxx index d650777..5913914 100644 --- a/Source/ctest.cxx +++ b/Source/ctest.cxx @@ -187,6 +187,7 @@ static const char * cmDocumentationOptions[][3] = {"--build-two-config", "Run CMake twice", "" }, {"--build-exe-dir", "Specify the directory for the executable.", "" }, {"--build-generator", "Specify the generator to use.", "" }, + {"--build-generator-toolset", "Specify the generator-specific toolset.",""}, {"--build-project", "Specify the name of the project to build.", "" }, {"--build-makeprogram", "Specify the make program to use.", "" }, {"--build-noclean", "Skip the make clean step.", "" }, |