diff options
-rw-r--r-- | Source/cmAddExecutableCommand.cxx | 7 | ||||
-rw-r--r-- | Source/cmAddLibraryCommand.cxx | 7 | ||||
-rw-r--r-- | Source/cmSetCommand.cxx | 20 | ||||
-rw-r--r-- | Source/cmSetCommand.h | 4 |
4 files changed, 30 insertions, 8 deletions
diff --git a/Source/cmAddExecutableCommand.cxx b/Source/cmAddExecutableCommand.cxx index 83ca862f00..d41549fe6e 100644 --- a/Source/cmAddExecutableCommand.cxx +++ b/Source/cmAddExecutableCommand.cxx @@ -18,14 +18,15 @@ #include "cmCacheManager.h" // cmExecutableCommand -bool cmAddExecutableCommand::InitialPass(std::vector<std::string> const& args) +bool cmAddExecutableCommand::InitialPass(std::vector<std::string> const& argsIn) { - if(args.size() < 2 ) + if(argsIn.size() < 2 ) { this->SetError("called with incorrect number of arguments"); return false; } - + std::vector<std::string> args; + cmSystemTools::ExpandListArguments(argsIn, args); std::vector<std::string>::const_iterator s = args.begin(); std::string exename = *s; diff --git a/Source/cmAddLibraryCommand.cxx b/Source/cmAddLibraryCommand.cxx index 445d40535f..a066585b26 100644 --- a/Source/cmAddLibraryCommand.cxx +++ b/Source/cmAddLibraryCommand.cxx @@ -18,14 +18,15 @@ #include "cmCacheManager.h" // cmLibraryCommand -bool cmAddLibraryCommand::InitialPass(std::vector<std::string> const& args) +bool cmAddLibraryCommand::InitialPass(std::vector<std::string> const& argsIn) { - if(args.size() < 1 ) + if(argsIn.size() < 1 ) { this->SetError("called with incorrect number of arguments"); return false; } - + std::vector<std::string> args; + cmSystemTools::ExpandListArguments(argsIn, args); // Library type defaults to value of BUILD_SHARED_LIBS, if it exists, // otherwise it defaults to static library. int shared = !cmSystemTools::IsOff(m_Makefile->GetDefinition("BUILD_SHARED_LIBS")); diff --git a/Source/cmSetCommand.cxx b/Source/cmSetCommand.cxx index 122df61b86..8ab33e4995 100644 --- a/Source/cmSetCommand.cxx +++ b/Source/cmSetCommand.cxx @@ -41,7 +41,25 @@ bool cmSetCommand::InitialPass(std::vector<std::string> const& args) cmCacheManager::CacheEntryType type = cmCacheManager::STRING; // required if cache const char* docstring = 0; // required if cache std::string::size_type cacheStart = 0; - + + // check for SET(VAR v1 v2 ... vn) + // and create + if(args.size() > 2) + { + if(args[1] != "CACHE" && args[2] != "CACHE") + { + value = args[1]; + for(int i =2; i < args.size(); ++i) + { + value += ";"; + value += args[i]; + } + m_Makefile->AddDefinition(variable, value.c_str()); + return true; + } + } + + if(args.size() == 2) { // SET (VAR value ) diff --git a/Source/cmSetCommand.h b/Source/cmSetCommand.h index f89e34a16b..720a805ea4 100644 --- a/Source/cmSetCommand.h +++ b/Source/cmSetCommand.h @@ -73,7 +73,9 @@ public: " TYPE and DOCSTRING are required. If TYPE is INTERNAL, then the " " VALUE is Always written into the cache, replacing any values " "existing in the cache. If it is not a CACHE VAR, then this always " - "writes into the current makefile."; + "writes into the current makefile.\n" + "An optional syntax is SET(VAR VALUE1 ... VALUEN).\n" + "In this case VAR is set to a ; separated list of values."; } cmTypeMacro(cmSetCommand, cmCommand); |