| @@ -62,16 +62,12 @@ public: | |||||
| //============================================================================== | //============================================================================== | ||||
| void create (const OwnedArray<LibraryModule>&) const | void create (const OwnedArray<LibraryModule>&) const | ||||
| { | { | ||||
| Array<RelativePath> files; | |||||
| for (int i = 0; i < getAllGroups().size(); ++i) | |||||
| findAllFilesToCompile (getAllGroups().getReference(i), files); | |||||
| const File cbpFile (getTargetFolder().getChildFile (project.getProjectFilenameRoot()) | const File cbpFile (getTargetFolder().getChildFile (project.getProjectFilenameRoot()) | ||||
| .withFileExtension (".cbp")); | .withFileExtension (".cbp")); | ||||
| XmlElement xml ("CodeBlocks_project_file"); | XmlElement xml ("CodeBlocks_project_file"); | ||||
| addVersion (xml); | addVersion (xml); | ||||
| createProject (*xml.createNewChildElement ("Project"), files); | |||||
| createProject (*xml.createNewChildElement ("Project")); | |||||
| writeXmlOrThrow (xml, cbpFile, "UTF-8", 10); | writeXmlOrThrow (xml, cbpFile, "UTF-8", 10); | ||||
| } | } | ||||
| @@ -96,20 +92,6 @@ private: | |||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||
| void findAllFilesToCompile (const Project::Item& projectItem, Array<RelativePath>& results) const | |||||
| { | |||||
| if (projectItem.isGroup()) | |||||
| { | |||||
| for (int i = 0; i < projectItem.getNumChildren(); ++i) | |||||
| findAllFilesToCompile (projectItem.getChild(i), results); | |||||
| } | |||||
| else | |||||
| { | |||||
| if (projectItem.shouldBeCompiled()) | |||||
| results.add (RelativePath (projectItem.getFile(), getTargetFolder(), RelativePath::buildTargetFolder)); | |||||
| } | |||||
| } | |||||
| void addVersion (XmlElement& xml) const | void addVersion (XmlElement& xml) const | ||||
| { | { | ||||
| XmlElement* fileVersion = xml.createNewChildElement ("FileVersion"); | XmlElement* fileVersion = xml.createNewChildElement ("FileVersion"); | ||||
| @@ -259,12 +241,15 @@ private: | |||||
| XmlElement* const linker = xml.createNewChildElement ("Linker"); | XmlElement* const linker = xml.createNewChildElement ("Linker"); | ||||
| const StringArray linkerFlags (getLinkerFlags (config)); | const StringArray linkerFlags (getLinkerFlags (config)); | ||||
| for (int i = 0; i < linkerFlags.size(); ++i) | for (int i = 0; i < linkerFlags.size(); ++i) | ||||
| setAddOption (*linker, "option", linkerFlags[i]); | setAddOption (*linker, "option", linkerFlags[i]); | ||||
| for (int i = 0; i < mingwLibs.size(); ++i) | for (int i = 0; i < mingwLibs.size(); ++i) | ||||
| setAddOption (*linker, "library", mingwLibs[i]); | setAddOption (*linker, "library", mingwLibs[i]); | ||||
| const StringArray librarySearchPaths (config.getLibrarySearchPaths()); | |||||
| for (int i = 0; i < librarySearchPaths.size(); ++i) | |||||
| setAddOption (*linker, "directory", replacePreprocessorDefs (getAllPreprocessorDefs(), librarySearchPaths[i])); | |||||
| } | } | ||||
| } | } | ||||
| @@ -297,23 +282,41 @@ private: | |||||
| setAddOption (*linker, "library", replacePreprocessorDefs (getAllPreprocessorDefs(), libs[i])); | setAddOption (*linker, "library", replacePreprocessorDefs (getAllPreprocessorDefs(), libs[i])); | ||||
| } | } | ||||
| void addCompileUnits (XmlElement& xml, const Array<RelativePath>& files) const | |||||
| void addCompileUnits (const Project::Item& projectItem, XmlElement& xml) const | |||||
| { | { | ||||
| for (int i = 0; i < files.size(); ++i) | |||||
| if (projectItem.isGroup()) | |||||
| { | { | ||||
| const RelativePath& file = files.getReference(i); | |||||
| xml.createNewChildElement ("Unit")->setAttribute ("filename", file.toUnixStyle()); | |||||
| for (int i = 0; i < projectItem.getNumChildren(); ++i) | |||||
| addCompileUnits (projectItem.getChild(i), xml); | |||||
| } | } | ||||
| else if (projectItem.shouldBeAddedToTargetProject()) | |||||
| { | |||||
| const RelativePath file (projectItem.getFile(), getTargetFolder(), RelativePath::buildTargetFolder); | |||||
| XmlElement* unit = xml.createNewChildElement ("Unit"); | |||||
| unit->setAttribute ("filename", file.toUnixStyle()); | |||||
| if (! projectItem.shouldBeCompiled()) | |||||
| { | |||||
| unit->createNewChildElement("Option")->setAttribute ("compile", 0); | |||||
| unit->createNewChildElement("Option")->setAttribute ("link", 0); | |||||
| } | |||||
| } | |||||
| } | |||||
| void addCompileUnits (XmlElement& xml) const | |||||
| { | |||||
| for (int i = 0; i < getAllGroups().size(); ++i) | |||||
| addCompileUnits (getAllGroups().getReference(i), xml); | |||||
| } | } | ||||
| void createProject (XmlElement& xml, const Array<RelativePath>& files) const | |||||
| void createProject (XmlElement& xml) const | |||||
| { | { | ||||
| addOptions (xml); | addOptions (xml); | ||||
| addBuild (xml); | addBuild (xml); | ||||
| addProjectCompilerOptions (xml); | addProjectCompilerOptions (xml); | ||||
| addProjectLinkerOptions (xml); | addProjectLinkerOptions (xml); | ||||
| addCompileUnits (xml, files); | |||||
| addCompileUnits (xml); | |||||
| } | } | ||||
| void setAddOption (XmlElement& xml, const String& name, const String& value) const | void setAddOption (XmlElement& xml, const String& name, const String& value) const | ||||