diff options
author | Alexander Neundorf <neundorf@kde.org> | 2009-03-08 19:33:58 (GMT) |
---|---|---|
committer | Alexander Neundorf <neundorf@kde.org> | 2009-03-08 19:33:58 (GMT) |
commit | 363c4e422d662dcc8e5cea5b2b396ea6e67220c7 (patch) | |
tree | 64db41614f138779c059294dd732f90802f942f9 /Source | |
parent | 038827c5da864dad68b7ed2b076e428a2efdb630 (diff) | |
download | CMake-363c4e422d662dcc8e5cea5b2b396ea6e67220c7.zip CMake-363c4e422d662dcc8e5cea5b2b396ea6e67220c7.tar.gz CMake-363c4e422d662dcc8e5cea5b2b396ea6e67220c7.tar.bz2 |
ENH: automatically add headers of implementation file to the codeblocks project file
Alex
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmExtraCodeBlocksGenerator.cxx | 40 |
1 files changed, 36 insertions, 4 deletions
diff --git a/Source/cmExtraCodeBlocksGenerator.cxx b/Source/cmExtraCodeBlocksGenerator.cxx index a84b28d..96f3a95 100644 --- a/Source/cmExtraCodeBlocksGenerator.cxx +++ b/Source/cmExtraCodeBlocksGenerator.cxx @@ -259,15 +259,47 @@ void cmExtraCodeBlocksGenerator } } + // The following loop tries to add header files matching to implementation + // files to the project. It does that by iterating over all source files, + // replacing the file name extension with ".h" and checks whether such a + // file exists. If it does, it is inserted into the map of files. + // A very similar version of that code exists also in the kdevelop + // project generator. + for (std::map<std::string, std::string>::const_iterator + sit=sourceFiles.begin(); + sit!=sourceFiles.end(); + ++sit) + { + std::string headerBasename=cmSystemTools::GetFilenamePath(sit->first); + headerBasename+="/"; + headerBasename+=cmSystemTools::GetFilenameWithoutExtension(sit->first); + + // check if there's a matching header around + for(std::vector<std::string>::const_iterator + ext = mf->GetHeaderExtensions().begin(); + ext != mf->GetHeaderExtensions().end(); + ++ext) + { + std::string hname=headerBasename; + hname += "."; + hname += *ext; + if(cmSystemTools::FileExists(hname.c_str())) + { + sourceFiles[hname] = hname; + break; + } + } + } + // insert all used source files in the CodeBlocks project for (std::map<std::string, std::string>::const_iterator sit=sourceFiles.begin(); sit!=sourceFiles.end(); ++sit) - { - fout<<" <Unit filename=\""<<sit->first <<"\">\n" - " </Unit>\n"; - } + { + fout<<" <Unit filename=\""<<sit->first <<"\">\n" + " </Unit>\n"; + } fout<<" </Project>\n" "</CodeBlocks_project_file>\n"; |