diff options
author | Bill Hoffman <bill.hoffman@kitware.com> | 2002-03-29 16:04:19 (GMT) |
---|---|---|
committer | Bill Hoffman <bill.hoffman@kitware.com> | 2002-03-29 16:04:19 (GMT) |
commit | dbdb0adce84b7a1a37fb058f65c8734ff29429c3 (patch) | |
tree | 427d4db1f0985dafdbdf32c7e79721a9339cfd68 /Source | |
parent | 7359c6bd16b04c39c0925314862d5342b67d89c8 (diff) | |
download | CMake-dbdb0adce84b7a1a37fb058f65c8734ff29429c3.zip CMake-dbdb0adce84b7a1a37fb058f65c8734ff29429c3.tar.gz CMake-dbdb0adce84b7a1a37fb058f65c8734ff29429c3.tar.bz2 |
ENH: add ability to use ; separated lists in SET and expand them for addexecutable and addlibrary
Diffstat (limited to 'Source')
-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 83ca862..d41549f 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 445d405..a066585 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 122df61..8ab33e4 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 f89e34a..720a805 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); |