diff options
author | Bill Hoffman <bill.hoffman@kitware.com> | 2006-03-10 21:53:04 (GMT) |
---|---|---|
committer | Bill Hoffman <bill.hoffman@kitware.com> | 2006-03-10 21:53:04 (GMT) |
commit | ac432c7e7ceb86672aa2ee64a7b104d4ad48c464 (patch) | |
tree | 4fce9f001b89c2cf7f13638ee37a650a449f52d7 | |
parent | 7387cb58505de65fea2622b443c1cc9d471818a2 (diff) | |
download | CMake-ac432c7e7ceb86672aa2ee64a7b104d4ad48c464.zip CMake-ac432c7e7ceb86672aa2ee64a7b104d4ad48c464.tar.gz CMake-ac432c7e7ceb86672aa2ee64a7b104d4ad48c464.tar.bz2 |
ENH: add a new FILE SYSTEM_PATH that allows you to read a environment variable with a path in it.
-rw-r--r-- | Source/cmFileCommand.cxx | 29 | ||||
-rw-r--r-- | Source/cmFileCommand.h | 6 |
2 files changed, 34 insertions, 1 deletions
diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index 6c4ad5c..6895f84 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -71,6 +71,10 @@ bool cmFileCommand::InitialPass(std::vector<std::string> const& args) { return this->HandleRelativePathCommand(args); } + else if ( subCommand == "SYSTEM_PATH" ) + { + return this->HandleSystemPathCommand(args); + } std::string e = "does not recognize sub-command "+subCommand; this->SetError(e.c_str()); @@ -889,3 +893,28 @@ bool cmFileCommand::HandleRemove(std::vector<std::string> const& args, return true; } +bool cmFileCommand::HandleSystemPathCommand(std::vector<std::string> + const& args) +{ + std::vector<std::string>::const_iterator i = args.begin(); + if(args.size() != 3) + { + this->SetError("FILE(SYSTEM_PATH ENV result) must be called with " + "only three arguments."); + return false; + } + i++; // Get rid of subcommand + std::vector<std::string> path; + cmSystemTools::GetPath(path, i->c_str()); + i++; + const char* var = i->c_str(); + std::string value; + for(std::vector<std::string>::iterator j = path.begin(); + j != path.end(); ++j) + { + value += *j; + value += ";"; + } + m_Makefile->AddDefinition(var, value.c_str()); + return true; +} diff --git a/Source/cmFileCommand.h b/Source/cmFileCommand.h index f3ca020..fe27bf6 100644 --- a/Source/cmFileCommand.h +++ b/Source/cmFileCommand.h @@ -73,6 +73,7 @@ public: " FILE(REMOVE_RECURSE [directory]...)\n" " FILE(MAKE_DIRECTORY [directory]...)\n" " FILE(RELATIVE_PATH variable directory file)\n" + " FILE(SYSTEM_PATH ENVIRONMENT_VARIABLE result)\n" "WRITE will write a message into a file called 'filename'. It " "overwrites the file if it already exists, and creates the file " "if it does not exist.\n" @@ -98,7 +99,9 @@ public: " /dir/*.py - match all python files in /dir and subdirectories\n" "MAKE_DIRECTORY will create a directory at the specified location\n" "RELATIVE_PATH will determine relative path from directory to the given" - " file"; + " file." + " SYSTEM_PATH will look up the environment variable named and " + "convert its contents into a cmake list of unix style paths. "; } cmTypeMacro(cmFileCommand, cmCommand); @@ -111,6 +114,7 @@ protected: bool HandleMakeDirectoryCommand(std::vector<std::string> const& args); bool HandleInstallCommand(std::vector<std::string> const& args); bool HandleRelativePathCommand(std::vector<std::string> const& args); + bool HandleSystemPathCommand(std::vector<std::string> const& args); }; |