summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorAlexander Neundorf <neundorf@kde.org>2009-03-08 19:33:58 (GMT)
committerAlexander Neundorf <neundorf@kde.org>2009-03-08 19:33:58 (GMT)
commit363c4e422d662dcc8e5cea5b2b396ea6e67220c7 (patch)
tree64db41614f138779c059294dd732f90802f942f9 /Source
parent038827c5da864dad68b7ed2b076e428a2efdb630 (diff)
downloadCMake-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.cxx40
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";