diff --git a/source/dub/generators/visuald.d b/source/dub/generators/visuald.d index 21c0f2f..3383d41 100644 --- a/source/dub/generators/visuald.d +++ b/source/dub/generators/visuald.d @@ -259,9 +259,10 @@ auto configs = m_app.getPackageConfigs(settings.platform, settings.config); auto buildsettings = settings.buildSettings; auto pbuildsettings = pack.getBuildSettings(settings.platform, configs[pack.name]); - m_app.addBuildSettings(buildsettings, settings.platform, m_app.getDefaultConfiguration(settings.platform)); + m_app.addBuildSettings(buildsettings, settings.platform, m_app.getDefaultConfiguration(settings.platform), pack); + string[] getSettings(string setting)(){ return __traits(getMember, buildsettings, setting); } - string[] getPathSettings(string setting)(){ return getSettings!setting().map!(p => (Path(p).relativeTo(pack.path)).toNativeString())().array(); } + string[] getPathSettings(string setting)(){ return getSettings!setting().map!(p => (Path(p).relativeTo(m_app.mainPackage.path)).toNativeString())().array(); } foreach(architecture; settings.platform.architecture) { string arch; diff --git a/source/dub/project.d b/source/dub/project.d index 83e4b43..9c7b63d 100644 --- a/source/dub/project.d +++ b/source/dub/project.d @@ -84,8 +84,10 @@ /** Allows iteration of the dependency tree in topological order */ - int delegate(int delegate(ref const Package)) getTopologicalPackageList(bool children_first = false) + int delegate(int delegate(ref const Package)) getTopologicalPackageList(bool children_first = false, in Package root_package = null) const { + const(Package) rootpack = root_package ? root_package : m_main; + int iterator(int delegate(ref const Package) del) { int ret = 0; @@ -109,9 +111,10 @@ if( ret ) return; } } - perform_rec(m_main); + perform_rec(rootpack); return ret; } + return &iterator; } @@ -232,11 +235,11 @@ } /// Returns the DFLAGS - void addBuildSettings(ref BuildSettings dst, in BuildPlatform platform, string config) + void addBuildSettings(ref BuildSettings dst, in BuildPlatform platform, string config, in Package root_package = null) const { auto configs = getPackageConfigs(platform, config); - foreach(pkg; this.getTopologicalPackageList()){ + foreach(pkg; this.getTopologicalPackageList(false, root_package)){ auto psettings = pkg.getBuildSettings(platform, configs[pkg.name]); processVars(dst, pkg.path.toNativeString(), psettings); if( pkg is m_main ){