From 4d8a7f8b32aee5bc3ced1a696dccbd6be0808036 Mon Sep 17 00:00:00 2001 From: Mikko Rasa Date: Thu, 4 May 2023 11:35:49 +0300 Subject: [PATCH] Include package path in Visual Studio projects --- plugins/msvc/vcxprojectgenerator.cpp | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/plugins/msvc/vcxprojectgenerator.cpp b/plugins/msvc/vcxprojectgenerator.cpp index 7cb9faf..a9bbd52 100644 --- a/plugins/msvc/vcxprojectgenerator.cpp +++ b/plugins/msvc/vcxprojectgenerator.cpp @@ -2,6 +2,7 @@ #include #include #include +#include #include #include #include @@ -58,17 +59,31 @@ bool VcxProjectGenerator::_run(const VcxProjectFile &project) if((exe = dynamic_cast(t))) break; + Package::Requirements reqs; + spkg.collect_required_packages(reqs); + vector pkg_path; + for(const Package *r: reqs) + if(const SourcePackage *s = dynamic_cast(r)) + { + FS::Path path = FS::dirname(s->get_source_directory()); + if(!any_equals(pkg_path, path)) + pkg_path.push_back(path); + } + const char *argv0 = Application::get_argv0(); const string &toolchain = builder.get_current_arch().get_toolchain(); + string base_cmd = format("%s --prefix=%s", argv0, builder.get_prefix()); + for(const FS::Path &p: pkg_path) + base_cmd += format(" --package-dir=%s", p); for(const char *p: platforms) for(const string &b: build_types) { - string base_cmd = format("%s --arch=%s-%s --build-type=%s --prefix=%s", argv0, p, toolchain, b, builder.get_prefix()); + string config_cmd = format("%s --arch=%s-%s --build-type=%s", base_cmd, p, toolchain, b); IO::print(out, "\t\n", b, p); IO::print(out, "\t\tMakeFile\n"); - IO::print(out, "\t\t%s\n", base_cmd); - IO::print(out, "\t\t%s -c\n", base_cmd); - IO::print(out, "\t\t%s -B\n", base_cmd); + IO::print(out, "\t\t%s\n", config_cmd); + IO::print(out, "\t\t%s -c\n", config_cmd); + IO::print(out, "\t\t%s -B\n", config_cmd); if(exe) IO::print(out, "\t\t%s\n", exe->get_path()); IO::print(out, "\t\n"); -- 2.45.2