[cmake-commits] hoffman committed cmGlobalXCodeGenerator.cxx 1.154
1.155 cmGlobalXCodeGenerator.h 1.48 1.49
cmake-commits at cmake.org
cmake-commits at cmake.org
Thu May 24 17:06:34 EDT 2007
Update of /cvsroot/CMake/CMake/Source
In directory public:/mounts/ram/cvs-serv19236/Source
Modified Files:
cmGlobalXCodeGenerator.cxx cmGlobalXCodeGenerator.h
Log Message:
ENH: add copy header stuff
Index: cmGlobalXCodeGenerator.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmGlobalXCodeGenerator.cxx,v
retrieving revision 1.154
retrieving revision 1.155
diff -u -d -r1.154 -r1.155
--- cmGlobalXCodeGenerator.cxx 23 May 2007 21:21:08 -0000 1.154
+++ cmGlobalXCodeGenerator.cxx 24 May 2007 21:06:32 -0000 1.155
@@ -729,6 +729,51 @@
buildFiles->AddObject(xsf);
}
}
+ if(cmtarget.GetPropertyAsBool("FRAMEWORK"))
+ {
+ this->AddFrameworkPhases(&cmtarget, buildPhases);
+ }
+ }
+}
+
+//----------------------------------------------------------------------------
+void cmGlobalXCodeGenerator::AddFrameworkPhases(cmTarget* target,
+ cmXCodeObject* buildPhases)
+{
+ const char* headers = target->GetProperty("FRAMEWORK_PUBLIC_HEADERS");
+ if(!headers)
+ {
+ return;
+ }
+
+ cmXCodeObject* copyHeaders =
+ this->CreateObject(cmXCodeObject::PBXCopyFilesBuildPhase);
+ copyHeaders->SetComment("Copy files");
+ copyHeaders->AddAttribute("buildActionMask",
+ this->CreateString("2147483647"));
+ copyHeaders->AddAttribute("dstSubfolderSpec",
+ this->CreateString("6"));
+ copyHeaders->AddAttribute("dstPath",
+ this->CreateString("Headers"));
+ buildPhases->AddObject(copyHeaders);
+ cmXCodeObject* headersToCopy =
+ this->CreateObject(cmXCodeObject::OBJECT_LIST);
+ copyHeaders->AddAttribute("files", headersToCopy);
+ std::vector<std::string> headersVec;
+ cmSystemTools::ExpandListArgument(headers,
+ headersVec);
+ cmCustomCommandLines commandLines;
+ std::vector<std::string> depends;
+ for(std::vector<std::string>::iterator i = headersVec.begin();
+ i != headersVec.end(); ++i)
+ {
+ cmCustomCommandLine line;
+ cmSourceFile* sf = this->CurrentMakefile->GetOrCreateSource(i->c_str());
+ cmXCodeObject* xsf =
+ this->CreateXCodeSourceFile(this->CurrentLocalGenerator,
+ sf, *target);
+ std::cerr << "copy header " << sf->GetFullPath() << "\n";
+ headersToCopy->AddObject(xsf);
}
}
@@ -2008,8 +2053,28 @@
cmtarget.GetSourceFiles().push_back
(this->CurrentMakefile->AddSource(file));
}
-
- std::vector<cmSourceFile*> & classes = cmtarget.GetSourceFiles();
+ std::vector<cmSourceFile*> classes = cmtarget.GetSourceFiles();
+ // add framework copy headers
+ if(cmtarget.GetPropertyAsBool("FRAMEWORK"))
+ {
+ const char* headers = cmtarget.GetProperty("FRAMEWORK_PUBLIC_HEADERS");
+ if(!headers)
+ {
+ return;
+ }
+ std::vector<std::string> headersVec;
+ cmSystemTools::ExpandListArgument(headers,
+ headersVec);
+ cmCustomCommandLines commandLines;
+ std::vector<std::string> depends;
+ for(std::vector<std::string>::iterator i = headersVec.begin();
+ i != headersVec.end(); ++i)
+ {
+ cmSourceFile* sf
+ = this->CurrentMakefile->GetOrCreateSource(i->c_str());
+ classes.push_back(sf);
+ }
+ }
for(std::vector<cmSourceFile*>::const_iterator s = classes.begin();
s != classes.end(); s++)
{
Index: cmGlobalXCodeGenerator.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmGlobalXCodeGenerator.h,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -d -r1.48 -r1.49
--- cmGlobalXCodeGenerator.h 11 May 2007 17:52:33 -0000 1.48
+++ cmGlobalXCodeGenerator.h 24 May 2007 21:06:32 -0000 1.49
@@ -65,6 +65,9 @@
const char* config,
bool ignoreErrors,
bool fast);
+
+ // add extra build phases for a framework target
+ void AddFrameworkPhases(cmTarget*, cmXCodeObject* buildPhases);
/**
* Generate the all required files for building this project/tree. This
More information about the Cmake-commits
mailing list