summaryrefslogtreecommitdiff
path: root/Source/cmExtraCodeBlocksGenerator.cxx
diff options
context:
space:
mode:
authorAlex Neundorf <neundorf@kde.org>2012-04-09 14:53:47 +0200
committerAlex Neundorf <neundorf@kde.org>2012-04-09 14:53:47 +0200
commit38d4c1ed0503917954e4ad6d29898006af89c67d (patch)
tree75154e964b18f11b4d71889f63403340bd770b9c /Source/cmExtraCodeBlocksGenerator.cxx
parentd2ed3c7dee72a41339ff95fb7aefac60778234df (diff)
downloadcmake-38d4c1ed0503917954e4ad6d29898006af89c67d.tar.gz
CodeBlocks: improve support for OBJECT libraries
This commit creates a dummy text file for each OBJECT library for the CodeBlocks generator, so the generated project file can reference a unique file for each target. Most probably these files are unused. Alex
Diffstat (limited to 'Source/cmExtraCodeBlocksGenerator.cxx')
-rw-r--r--Source/cmExtraCodeBlocksGenerator.cxx30
1 files changed, 28 insertions, 2 deletions
diff --git a/Source/cmExtraCodeBlocksGenerator.cxx b/Source/cmExtraCodeBlocksGenerator.cxx
index e0574ea9d7..a458860557 100644
--- a/Source/cmExtraCodeBlocksGenerator.cxx
+++ b/Source/cmExtraCodeBlocksGenerator.cxx
@@ -534,6 +534,31 @@ void cmExtraCodeBlocksGenerator
}
+// Write a dummy file for OBJECT libraries, so C::B can reference some file
+std::string cmExtraCodeBlocksGenerator::CreateDummyTargetFile(
+ cmMakefile* mf, cmTarget* target) const
+{
+ // this file doesn't seem to be used by C::B in custom makefile mode,
+ // but we generate a unique file for each OBJECT library so in case
+ // C::B uses it in some way, the targets don't interfere with each other.
+ std::string filename = mf->GetCurrentOutputDirectory();
+ filename += "/";
+ filename += mf->GetLocalGenerator()->GetTargetDirectory(*target);
+ filename += "/";
+ filename += target->GetName();
+ filename += ".objlib";
+ cmGeneratedFileStream fout(filename.c_str());
+ if(fout)
+ {
+ fout << "# This is a dummy file for the OBJECT library "
+ << target->GetName()
+ << " for the CMake CodeBlocks project generator.\n"
+ << "# Don't edit, this file will be overwritten.\n";
+ }
+ return filename;
+}
+
+
// Generate the xml code for one target.
void cmExtraCodeBlocksGenerator::AppendTarget(cmGeneratedFileStream& fout,
const char* targetName,
@@ -572,10 +597,11 @@ void cmExtraCodeBlocksGenerator::AppendTarget(cmGeneratedFileStream& fout,
}
const char* buildType = makefile->GetDefinition("CMAKE_BUILD_TYPE");
- const char* location = 0;
+ std::string location;
if ( target->GetType()==cmTarget::OBJECT_LIBRARY)
{
- location = "dummy"; // hmm, what to use here ?
+ location = this->CreateDummyTargetFile(const_cast<cmMakefile*>(makefile),
+ target);
}
else
{