diff options
author | Andy Cedilnik <andy.cedilnik@kitware.com> | 2002-01-18 20:39:24 (GMT) |
---|---|---|
committer | Andy Cedilnik <andy.cedilnik@kitware.com> | 2002-01-18 20:39:24 (GMT) |
commit | 21224d0bf1904e86c35d232593aabbfb531eae83 (patch) | |
tree | 69ec4279fee8fd1dd8bf63b723c0d1d6a25fb673 /Source/cmSourceFilesRemoveCommand.cxx | |
parent | 21c01f609d87fc1e0d54977f0217c9bee7d3b9d1 (diff) | |
download | CMake-21224d0bf1904e86c35d232593aabbfb531eae83.zip CMake-21224d0bf1904e86c35d232593aabbfb531eae83.tar.gz CMake-21224d0bf1904e86c35d232593aabbfb531eae83.tar.bz2 |
Add GENERATED to cmSourceFilesRemoveCommand
Diffstat (limited to 'Source/cmSourceFilesRemoveCommand.cxx')
-rw-r--r-- | Source/cmSourceFilesRemoveCommand.cxx | 41 |
1 files changed, 37 insertions, 4 deletions
diff --git a/Source/cmSourceFilesRemoveCommand.cxx b/Source/cmSourceFilesRemoveCommand.cxx index 86efc2f..0d1d4de 100644 --- a/Source/cmSourceFilesRemoveCommand.cxx +++ b/Source/cmSourceFilesRemoveCommand.cxx @@ -43,18 +43,51 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // cmSourceFilesRemoveCommand bool cmSourceFilesRemoveCommand::InitialPass(std::vector<std::string> const& args) { - if(args.size() < 1 ) + if(args.size() < 1 ) { this->SetError("called with incorrect number of arguments"); return false; } + int generated = 0; for(std::vector<std::string>::const_iterator i = (args.begin() + 1); i != args.end(); ++i) { + std::string copy = *i; + if ( copy == "GENERATED" ) + { + generated = 1; + continue; + } cmSourceFile file; - file.SetName((*i).c_str(), m_Makefile->GetCurrentDirectory(), - m_Makefile->GetSourceExtensions(), - m_Makefile->GetHeaderExtensions()); + if ( generated ) + { + // This file will be generated, so we should not check + // if it exist. + std::string ext = cmSystemTools::GetFilenameExtension(copy); + std::string path = cmSystemTools::GetFilenamePath(copy); + std::string name_no_ext = cmSystemTools::GetFilenameName(copy.c_str()); + name_no_ext = name_no_ext.substr(0, name_no_ext.length()-ext.length()); + if ( ext[0] == '.' ) + { + ext = ext.substr(1); + } + if((path.size() && path[0] == '/') || + (path.size() > 1 && path[1] == ':')) + { + file.SetName(name_no_ext.c_str(), path.c_str(), ext.c_str(), false); + } + else + { + file.SetName(name_no_ext.c_str(), m_Makefile->GetCurrentOutputDirectory(), + ext.c_str(), false); + } + } + else + { + file.SetName((*i).c_str(), m_Makefile->GetCurrentDirectory(), + m_Makefile->GetSourceExtensions(), + m_Makefile->GetHeaderExtensions()); + } m_Makefile->RemoveSource(file, args[0].c_str()); } return true; |