diff options
author | Bill Hoffman <bill.hoffman@kitware.com> | 2001-08-29 19:57:57 (GMT) |
---|---|---|
committer | Bill Hoffman <bill.hoffman@kitware.com> | 2001-08-29 19:57:57 (GMT) |
commit | 97dc84a613b1c25340d705537b015e410d541b14 (patch) | |
tree | 99cd128e86d8378d81e07d4dc35a2b7d7dce151c | |
parent | 222199b3cdeb6266165a4b60c475fa7946b933d2 (diff) | |
download | CMake-97dc84a613b1c25340d705537b015e410d541b14.zip CMake-97dc84a613b1c25340d705537b015e410d541b14.tar.gz CMake-97dc84a613b1c25340d705537b015e410d541b14.tar.bz2 |
ENH: run cmake from cmaketest
-rw-r--r-- | Source/cmake.cxx | 6 | ||||
-rw-r--r-- | Source/cmaketest.cxx | 33 |
2 files changed, 25 insertions, 14 deletions
diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 6b6673b..5dbf630 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -132,7 +132,10 @@ void cmake::AddCMakePaths(const std::vector<std::string>& args) // Find our own executable. std::string cMakeSelf = args[0]; cmSystemTools::ConvertToUnixSlashes(cMakeSelf); - cMakeSelf = cmSystemTools::FindProgram(cMakeSelf.c_str()); + if(!cmSystemTools::FileExists(cMakeSelf.c_str())) + { + cMakeSelf = cmSystemTools::FindProgram(cMakeSelf.c_str()); + } if(!cmSystemTools::FileExists(cMakeSelf.c_str())) { #ifdef CMAKE_BUILD_DIR @@ -242,7 +245,6 @@ int cmake::Generate(const std::vector<std::string>& args, bool buildMakefiles) return -1; } } - // Create a makefile cmMakefile mf; diff --git a/Source/cmaketest.cxx b/Source/cmaketest.cxx index 0ab963c..d2be7d2 100644 --- a/Source/cmaketest.cxx +++ b/Source/cmaketest.cxx @@ -1,5 +1,7 @@ #include "cmaketest.h" #include "cmSystemTools.h" +#include "cmake.h" +#include "cmListFileCache.h" // this is a test driver program for cmake. int main (int argc, char *argv[]) @@ -9,7 +11,6 @@ int main (int argc, char *argv[]) std::cerr << "Usage: " << argv[0] << " test-src-dir test-bin-dir test-executable\n"; return 1; } - // does the directory exist ? if (!cmSystemTools::FileIsDirectory(argv[2])) { @@ -30,26 +31,34 @@ int main (int argc, char *argv[]) std::string output; // change to the tests directory and run cmake + // use the cmake object instead of calling cmake std::string cwd = cmSystemTools::GetCurrentWorkingDirectory(); cmSystemTools::ChangeDirectory(binaryDirectory); - std::string ccmd = CMAKE_COMMAND; - ccmd += " "; - ccmd += sourceDirectory; - if (!cmSystemTools::RunCommand(ccmd.c_str(), output)) + cmake cm; + std::vector<std::string> args; + // use this program as the cmake to be run, it should not + // be run that way but the cmake object requires a vailid path + std::string cmakeCommand = CMAKE_COMMAND; + if(cmakeCommand[0] = '\"') + { + cmakeCommand = cmakeCommand.substr(1, cmakeCommand.size()-2); + } + args.push_back(cmakeCommand.c_str()); + args.push_back(sourceDirectory); + if (cm.Generate(args) != 0) { std::cerr << "Error: cmake execution failed\n"; - std::cerr << output.c_str() << "\n"; // return to the original directory cmSystemTools::ChangeDirectory(cwd.c_str()); return 1; } - + cmListFileCache::GetInstance()->ClearCache(); // now build the test std::string makeCommand = MAKEPROGRAM; makeCommand += " "; -#ifdef _WIN32 +#if defined(_WIN32) && !defined(__CYGWIN__) makeCommand += executableName; - makeCommand += ".dsw /MAKE \"ALL_BUILD - Release\" /REBUILD"; + makeCommand += ".dsw /MAKE \"ALL_BUILD - Debug\" /REBUILD"; #else makeCommand += " all"; #endif @@ -75,8 +84,8 @@ int main (int argc, char *argv[]) { fullPath = cmSystemTools::CollapseFullPath(tryPath.c_str()); } - // try the release extension - tryPath = "Release/"; + // try the Debug extension + tryPath = "Debug/"; tryPath += cmSystemTools::GetFilenameName(executableName); if(cmSystemTools::FileExists(tryPath.c_str())) { @@ -96,7 +105,7 @@ int main (int argc, char *argv[]) fullPath = cmSystemTools::CollapseFullPath(tryPath.c_str()); } tryPath = executableDirectory; - tryPath += "/Release/"; + tryPath += "/Debug/"; tryPath += executableName; tryPath += cmSystemTools::GetExecutableExtension(); if(cmSystemTools::FileExists(tryPath.c_str())) |