diff --git a/source/dub/generators/visuald.d b/source/dub/generators/visuald.d index 8d30215..08885d6 100644 --- a/source/dub/generators/visuald.d +++ b/source/dub/generators/visuald.d @@ -250,8 +250,8 @@ void generateProjectConfiguration(Appender!(char[]) ret, const Package pack, Config type) { - - string[] getSettingsHelper(BuildSettings bs, in string setting) { + // Helper functions used within. + string[] getSettingsFromBuildSettings(BuildSettings bs, in string setting) { // TODO: make nice, compile time string stuff? switch(setting) { case "dflags": return bs.dflags; @@ -277,20 +277,16 @@ string[] ret; performOnDependencies(pack, (const Package dep) { ret ~= getSettings(dep, setting, prefixPath); } ); if(prefixPath) { - string[] itms = getSettingsHelper(pack.getBuildSettings(platform, ""), setting); + string[] itms = getSettingsFromBuildSettings(pack.getBuildSettings(platform, ""), setting); foreach(i; itms) ret ~= to!string(pack.path) ~ "\\" ~ i; } else - ret ~= getSettingsHelper(pack.getBuildSettings(platform, ""), setting); + ret ~= getSettingsFromBuildSettings(pack.getBuildSettings(platform, ""), setting); return ret; } } - string combine(string seperator)(string[] vals) { - return reduce!("a~'"~seperator~"'~b")("", vals); - } - // Specify build configuration name ret.formattedWrite(" ", to!string(type)); @@ -306,9 +302,14 @@ 0 0 0 - 0 - 1 - 0 + 0"); + + // debug and optimize setting + ret.formattedWrite(" + %s + %s", type != Config.Release? "1":"0", type != Config.Debug? "1":"0"); + + ret.formattedWrite(" 0 0 0 @@ -341,11 +342,16 @@ 0 0"); - // Compiler ? + // include paths and string imports + string imports; + string stringImports; + ret.formattedWrite(" + %s + %s", imports, stringImports); + + // Compiler? ret.formattedWrite(" $(DMDInstallDir)windows\\bin\\dmd.exe - - $(ConfigurationName) $(OutDir) @@ -361,14 +367,14 @@ 1 $(IntDir)\\$(TargetName).json 0 - - 0"); + 0 + "); // version ids ? // Add version identifiers - string versions = combine!(" ")(getSettings(pack, "versions", false)); + string versions = join(getSettings(pack, "versions", false), " "); ret.formattedWrite(" %s", versions); - + ret.formattedWrite(" 0 0 @@ -391,8 +397,8 @@ "); // Add libraries. - string linkLibs = combine!(" ")(getSettings(pack, "libs", false)); - string addLinkFiles = combine!(" ")(getSettings(pack, "files", true)); + string linkLibs = join(getSettings(pack, "libs", false), " "); + string addLinkFiles = join(getSettings(pack, "files", true), " "); ret.formattedWrite(" %s", linkLibs ~ " " ~ addLinkFiles); diff --git a/source/dub/package_.d b/source/dub/package_.d index c80ce2c..ae8204f 100644 --- a/source/dub/package_.d +++ b/source/dub/package_.d @@ -197,10 +197,14 @@ foreach( string pkg, verspec; *pd ) { enforce(pkg !in m_dependencies, "The dependency '"~pkg~"' is specified more than once." ); if( verspec.type == Json.Type.Object ){ + // full blown specifier auto ver = verspec["version"].get!string; m_dependencies[pkg] = new Dependency("==", ver); m_localPackageDefs ~= LocalPackageDef(pkg, Version(ver), Path(verspec.path.get!string())); - } else m_dependencies[pkg] = new Dependency(verspec.get!string()); + } else { + // canonical "package-id": "version" + m_dependencies[pkg] = new Dependency(verspec.get!string()); + } } } }