diff --git a/source/dub/generators/monod.d b/source/dub/generators/monod.d index dbfa02a..1d6590b 100644 --- a/source/dub/generators/monod.d +++ b/source/dub/generators/monod.d @@ -41,7 +41,7 @@ void generateProject(BuildPlatform build_platform) { logTrace("About to generate projects for %s, with %s direct dependencies.", m_app.mainPackage().name, to!string(m_app.mainPackage().dependencies().length)); - generateProjects(m_app.mainPackage()); + generateProjects(m_app.mainPackage(), build_platform); generateSolution(); } @@ -122,7 +122,7 @@ ret.put("EndProject\n"); } - private void generateProjects(in Package pack) + private void generateProjects(in Package pack, BuildPlatform build_platform) { bool[const(Package)] visited; @@ -130,7 +130,7 @@ if( p in visited ) return; visited[p] = true; - generateProject(p); + generateProject(p, build_platform); if( !m_singleProject ) performOnDependencies(p, &generateRec); @@ -138,7 +138,8 @@ generateRec(pack); } - private void generateProject(in Package pack) { + private void generateProject(in Package pack, BuildPlatform build_platform) + { logTrace("About to write to '%s.dproj' file", pack.name); auto sln = openFile(pack.name ~ ".dproj", FileMode.CreateTrunc); scope(exit) sln.close(); @@ -149,6 +150,8 @@ auto projName = pack.name; + auto buildsettings = m_app.getBuildSettings(build_platform, m_app.getDefaultConfiguration(build_platform)); + sln.put(" \n"); sln.put(" Debug\n"); sln.put(" AnyCPU\n"); @@ -159,6 +162,32 @@ sln.put(" True\n"); sln.put(" True\n"); sln.put(" DMD2\n"); + if( !buildsettings.versions.empty ){ + sln.put(" \n"); + sln.put(" \n"); + sln.formattedWrite(" %s\n", buildsettings.versions.join(", ")); + sln.put(" \n"); + sln.put(" \n"); + } + if( !buildsettings.importPaths.empty ){ + sln.put(" \n"); + sln.put(" \n"); + foreach(dir; buildsettings.importPaths) + sln.formattedWrite(" %s\n", dir); + sln.put(" \n"); + sln.put(" \n"); + } + if( !buildsettings.libs.empty ){ + sln.put(" \n"); + sln.put(" \n"); + foreach(dir; buildsettings.libs) + sln.formattedWrite(" %s\n", build_platform.platform.canFind("windows") ? dir ~ ".lib" : dir); + sln.put(" \n"); + sln.put(" \n"); + } + buildsettings.dflags ~= buildsettings.stringImportPaths.map!(p => "-J"~p)().array(); + sln.formattedWrite(" %s\n", buildsettings.dflags.join(" ")); + sln.formattedWrite(" %s\n", buildsettings.lflags.join(" ")); sln.put(" \n"); void generateProperties(Config config) @@ -167,15 +196,13 @@ config.configName, config.platformName); sln.put(" True\n"); - sln.formattedWrite(" bin/%s\n", config.configName); + sln.formattedWrite(" bin\\%s\n", config.configName); sln.put(" True\n"); sln.put(" Executable\n"); sln.formattedWrite(" %s\n", pack.name); sln.put(" False\n"); - sln.formattedWrite(" obj/%s\n", config.configName); + sln.formattedWrite(" obj\\%s\n", config.configName); sln.put(" 0\n"); - sln.put(" \n"); - sln.put(" \n"); sln.put(" \n"); } @@ -191,6 +218,8 @@ foreach( s; p.sources ) sln.formattedWrite(" \n", (p.path.relativeTo(pack.path) ~ s).toNativeString()); + foreach( s; buildsettings.files ) + sln.formattedWrite(" \n", s); }