From 03e6684355ce3c81d1e2961ae606fdbed941f166 Mon Sep 17 00:00:00 2001 From: tpoole Date: Mon, 25 Sep 2017 11:42:38 +0100 Subject: [PATCH] Projucer: Fixed a Visual Studio exporter library linking bug --- .../Project Saving/jucer_ProjectExport_MSVC.h | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/extras/Projucer/Source/Project Saving/jucer_ProjectExport_MSVC.h b/extras/Projucer/Source/Project Saving/jucer_ProjectExport_MSVC.h index 350e46440a..ced7a5e913 100644 --- a/extras/Projucer/Source/Project Saving/jucer_ProjectExport_MSVC.h +++ b/extras/Projucer/Source/Project Saving/jucer_ProjectExport_MSVC.h @@ -529,6 +529,13 @@ public: : "NDEBUG;%(PreprocessorDefinitions)"); } + const String externalLibraries (getExternalLibraries (config, getOwner().getExternalLibrariesString())); + const auto additionalDependencies = externalLibraries.isNotEmpty() ? getOwner().replacePreprocessorTokens (config, externalLibraries).trim() + ";%(AdditionalDependencies)" + : String(); + const StringArray librarySearchPaths (config.getLibrarySearchPaths()); + const auto additionalLibraryDirs = librarySearchPaths.size() > 0 ? getOwner().replacePreprocessorTokens (config, librarySearchPaths.joinIntoString (";")) + ";%(AdditionalLibraryDirectories)" + : String(); + { XmlElement* link = group->createNewChildElement ("Link"); link->createNewChildElement ("OutputFile")->addTextElement (getOutputFilePath (config)); @@ -551,17 +558,13 @@ public: link->createNewChildElement ("EnableCOMDATFolding")->addTextElement ("true"); } - const StringArray librarySearchPaths (config.getLibrarySearchPaths()); - if (librarySearchPaths.size() > 0) - link->createNewChildElement ("AdditionalLibraryDirectories")->addTextElement (getOwner().replacePreprocessorTokens (config, librarySearchPaths.joinIntoString (";")) - + ";%(AdditionalLibraryDirectories)"); + if (additionalLibraryDirs.isNotEmpty()) + link->createNewChildElement ("AdditionalLibraryDirectories")->addTextElement (additionalLibraryDirs); link->createNewChildElement ("LargeAddressAware")->addTextElement ("true"); - const String externalLibraries (getExternalLibraries (config, getOwner().getExternalLibrariesString())); - if (externalLibraries.isNotEmpty()) - link->createNewChildElement ("AdditionalDependencies")->addTextElement (getOwner().replacePreprocessorTokens (config, externalLibraries).trim() - + ";%(AdditionalDependencies)"); + if (additionalDependencies.isNotEmpty()) + link->createNewChildElement ("AdditionalDependencies")->addTextElement (additionalDependencies); String extraLinkerOptions (getOwner().getExtraLinkerFlagsString()); if (extraLinkerOptions.isNotEmpty()) @@ -584,6 +587,16 @@ public: bsc->createNewChildElement ("OutputFile")->addTextElement (getOwner().getIntDirFile (config, config.getOutputFilename (".bsc", true))); } + { + XmlElement* lib = group->createNewChildElement ("Lib"); + + if (additionalDependencies.isNotEmpty()) + lib->createNewChildElement ("AdditionalDependencies")->addTextElement (additionalDependencies); + + if (additionalLibraryDirs.isNotEmpty()) + lib->createNewChildElement ("AdditionalLibraryDirectories")->addTextElement (additionalLibraryDirs); + } + const RelativePath& manifestFile = getOwner().getManifestPath(); if (manifestFile.getRoot() != RelativePath::unknown) {