#pragma once
#include "cmConfigure.h"
#include <string>
#include <vector>
#include "cmDuration.h"
class cmake;
class cmCTest;
class cmCTestBuildAndTest
{
public:
int Run();
cmCTestBuildAndTest(cmCTest* ctest);
private:
cmCTest* CTest;
bool RunCMake(cmake* cm);
bool RunTest(std::vector<std::string> const& args, int* retVal,
cmDuration timeout);
std::string BuildGenerator;
std::string BuildGeneratorPlatform;
std::string BuildGeneratorToolset;
std::vector<std::string> BuildOptions;
bool BuildTwoConfig = false;
std::string BuildMakeProgram;
std::string ConfigSample;
std::string SourceDir;
std::string BinaryDir;
std::string BuildProject;
std::string TestCommand;
bool BuildNoClean = false;
std::string BuildRunDir;
std::string ExecutableDirectory;
std::vector<std::string> TestCommandArgs;
std::vector<std::string> BuildTargets;
bool BuildNoCMake = false;
cmDuration Timeout = cmDuration::zero();
friend class cmCTest;
};