summaryrefslogtreecommitdiffstats
path: root/Source/cmSourceGroupCommand.cxx
diff options
context:
space:
mode:
authorAndy Cedilnik <andy.cedilnik@kitware.com>2002-10-04 22:16:13 (GMT)
committerAndy Cedilnik <andy.cedilnik@kitware.com>2002-10-04 22:16:13 (GMT)
commita518fed4e35bc7c630be548c62f756121dba0b8b (patch)
tree4dc7659acd9a658510d6d511f6a30eccb203830f /Source/cmSourceGroupCommand.cxx
parent77616437d1f348bf20c7714c156fd23f19323d4b (diff)
downloadCMake-a518fed4e35bc7c630be548c62f756121dba0b8b.zip
CMake-a518fed4e35bc7c630be548c62f756121dba0b8b.tar.gz
CMake-a518fed4e35bc7c630be548c62f756121dba0b8b.tar.bz2
Try to improve source group interface
Diffstat (limited to 'Source/cmSourceGroupCommand.cxx')
-rw-r--r--Source/cmSourceGroupCommand.cxx36
1 files changed, 32 insertions, 4 deletions
diff --git a/Source/cmSourceGroupCommand.cxx b/Source/cmSourceGroupCommand.cxx
index 17bf434..d62fd77 100644
--- a/Source/cmSourceGroupCommand.cxx
+++ b/Source/cmSourceGroupCommand.cxx
@@ -19,14 +19,42 @@
// cmSourceGroupCommand
bool cmSourceGroupCommand::InitialPass(std::vector<std::string> const& args)
{
- if(args.size() != 2)
+ if(args.size() < 1)
{
this->SetError("called with incorrect number of arguments");
return false;
- }
+ }
- m_Makefile->AddSourceGroup(args[0].c_str(), args[1].c_str());
+ if ( args[1] == "REGULAR_EXPRESSION" && args.size() == 3 )
+ {
+ m_Makefile->AddSourceGroup(args[0].c_str(), args[2].c_str());
+ return true;
+ }
+
+ if ( args[1] == "FILES" )
+ {
+ cmSourceGroup* sg = m_Makefile->GetSourceGroup(args[0].c_str());
+ if ( !sg )
+ {
+ m_Makefile->AddSourceGroup(args[0].c_str(), 0);
+ sg = m_Makefile->GetSourceGroup(args[0].c_str());
+ }
+ unsigned int cc;
+ for ( cc = 3; cc < args.size(); cc ++ )
+ {
+ sg->AddSource(args[cc].c_str(), 0);
+ }
+
+ return true;
+ }
- return true;
+ if ( args.size() == 2 )
+ {
+ m_Makefile->AddSourceGroup(args[0].c_str(), args[1].c_str());
+ return true;
+ }
+
+ this->SetError("called with incorrect number of arguments");
+ return false;
}