From cebf34d9bbbe23af7ef04304071ebdc7ad4c1271 Mon Sep 17 00:00:00 2001 From: jules Date: Mon, 16 Apr 2012 12:20:58 +0100 Subject: [PATCH] Introjucer: improved handling of windows filenames when run on *nix. --- .../Project Saving/jucer_ProjectExport_MSVC.h | 20 +++++++++----- .../Project Saving/jucer_ProjectExporter.cpp | 2 +- .../Source/Project/jucer_Module.cpp | 4 +-- .../Source/Project/jucer_Project.cpp | 6 ++--- .../Source/Utility/jucer_CodeHelpers.cpp | 2 +- .../Source/Utility/jucer_FileHelpers.cpp | 26 ++++++++++++++++--- .../Source/Utility/jucer_FileHelpers.h | 4 +++ .../Source/Utility/jucer_RelativePath.h | 18 +++---------- 8 files changed, 50 insertions(+), 32 deletions(-) diff --git a/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_MSVC.h b/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_MSVC.h index 80d539bd2a..26c4ba8e16 100644 --- a/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_MSVC.h +++ b/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_MSVC.h @@ -171,7 +171,7 @@ protected: //============================================================================== String getIntermediatesPath (const BuildConfiguration& config) const { - return ".\\" + File::createLegalFileName (config.getName().trim()); + return prependDot (File::createLegalFileName (config.getName().trim())); } String getConfigTargetPath (const BuildConfiguration& config) const @@ -185,8 +185,8 @@ protected: if (binaryRelPath.isAbsolute()) return binaryRelPath.toWindowsStyle(); - return ".\\" + binaryRelPath.rebased (projectFolder, getTargetFolder(), RelativePath::buildTargetFolder) - .toWindowsStyle(); + return prependDot (binaryRelPath.rebased (projectFolder, getTargetFolder(), RelativePath::buildTargetFolder) + .toWindowsStyle()); } String getPreprocessorDefs (const BuildConfiguration& config, const String& joinString) const @@ -477,6 +477,12 @@ protected: return versionParts.joinIntoString (","); } + static String prependDot (const String& filename) + { + return FileHelpers::isAbsolutePath (filename) ? filename + : (".\\" + filename); + } + JUCE_DECLARE_NON_COPYABLE (MSVCProjectExporterBase); }; @@ -1221,14 +1227,14 @@ protected: { XmlElement* iconGroup = projectXml.createNewChildElement ("ItemGroup"); XmlElement* e = iconGroup->createNewChildElement ("None"); - e->setAttribute ("Include", ".\\" + iconFile.getFileName()); + e->setAttribute ("Include", prependDot (iconFile.getFileName())); } if (hasResourceFile()) { XmlElement* rcGroup = projectXml.createNewChildElement ("ItemGroup"); XmlElement* e = rcGroup->createNewChildElement ("ResourceCompile"); - e->setAttribute ("Include", ".\\" + rcFile.getFileName()); + e->setAttribute ("Include", prependDot (rcFile.getFileName())); } { @@ -1364,7 +1370,7 @@ protected: { XmlElement* iconGroup = filterXml.createNewChildElement ("ItemGroup"); XmlElement* e = iconGroup->createNewChildElement ("None"); - e->setAttribute ("Include", ".\\" + iconFile.getFileName()); + e->setAttribute ("Include", prependDot (iconFile.getFileName())); e->createNewChildElement ("Filter")->addTextElement (ProjectSaver::getJuceCodeGroupName()); } @@ -1372,7 +1378,7 @@ protected: { XmlElement* rcGroup = filterXml.createNewChildElement ("ItemGroup"); XmlElement* e = rcGroup->createNewChildElement ("ResourceCompile"); - e->setAttribute ("Include", ".\\" + rcFile.getFileName()); + e->setAttribute ("Include", prependDot (rcFile.getFileName())); e->createNewChildElement ("Filter")->addTextElement (ProjectSaver::getJuceCodeGroupName()); } } diff --git a/extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.cpp b/extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.cpp index dfc129d120..f398846959 100644 --- a/extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.cpp +++ b/extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.cpp @@ -79,7 +79,7 @@ ProjectExporter* ProjectExporter::createNewExporter (Project& project, const int File target (exp->getTargetFolder()); if (FileHelpers::shouldPathsBeRelative (juceFolder.getFullPathName(), project.getFile().getFullPathName())) - exp->getJuceFolderValue() = juceFolder.getRelativePathFrom (project.getFile().getParentDirectory()); + exp->getJuceFolderValue() = FileHelpers::getRelativePathFrom (juceFolder, project.getFile().getParentDirectory()); else exp->getJuceFolderValue() = juceFolder.getFullPathName(); diff --git a/extras/Introjucer/Source/Project/jucer_Module.cpp b/extras/Introjucer/Source/Project/jucer_Module.cpp index 09003e1346..dbebdcb41c 100644 --- a/extras/Introjucer/Source/Project/jucer_Module.cpp +++ b/extras/Introjucer/Source/Project/jucer_Module.cpp @@ -679,7 +679,7 @@ void LibraryModule::addBrowsableCode (ProjectExporter& exporter, const Array