X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fmicrosofttools.cpp;h=d6ed9e4babdcc91133335a4051accc6b7008eda3;hb=451ef4f33b5a57dcb56bd7cb671bed359ac86247;hp=05edda5ea5f95e55eb74bff813dabd8d63d07cc9;hpb=c0e0728ff439ddb364cee26f164e46705beac822;p=builder.git diff --git a/source/microsofttools.cpp b/source/microsofttools.cpp index 05edda5..d6ed9e4 100644 --- a/source/microsofttools.cpp +++ b/source/microsofttools.cpp @@ -1,6 +1,5 @@ #include #include -#include #include #include "builder.h" #include "externaltask.h" @@ -35,20 +34,30 @@ void MicrosoftTools::find_vc_bin_dir(Builder &builder, const Architecture &arch) argv.push_back("-property"); argv.push_back("installationPath"); - builder.get_logger().log("auxcommands", format("Running %s", join(argv.begin(), argv.end()))); + builder.get_logger().log("auxcommands", "Running %s", join(argv.begin(), argv.end())); string output = ExternalTask::run_and_capture_output(argv, FS::Path(), true); FS::Path vs_path = strip(output); - builder.get_logger().log("tools", format("Visual Studio found in %s", vs_path)); + builder.get_logger().log("tools", "Visual Studio found in %s", vs_path); - FS::Path vc_version_fn = vs_path/"VC"/"Auxiliary"/"Build"/"Microsoft.VCToolsVersion.v142.default.txt"; - builder.get_logger().log("files", format("Reading %s", vc_version_fn)); + FS::Path vc_aux_build_dir = vs_path/"VC"/"Auxiliary"/"Build"; + builder.get_logger().log("files", "Traversing %s", vc_aux_build_dir); + vector vc_version_files = FS::list_filtered(vc_aux_build_dir, "^Microsoft\\.VCToolsVersion\\."); + if(vc_version_files.empty()) + { + builder.get_logger().log("problems", "MSVC tools version not found"); + return; + } + + sort(vc_version_files); + FS::Path vc_version_fn = vc_aux_build_dir/vc_version_files.back(); + builder.get_logger().log("files", "Reading %s", vc_version_fn); char buffer[256]; unsigned len = IO::File(vc_version_fn.str()).read(buffer, sizeof(buffer)); string vc_version = strip(string(buffer, len)); - builder.get_logger().log("tools", format("Detected MSVC version %s", vc_version)); + builder.get_logger().log("tools", "Detected MSVC version %s", vc_version); const Architecture &native_arch = builder.get_native_arch(); string host = (native_arch.get_bits()==64 ? "Hostx64" : "Hostx86"); @@ -64,7 +73,7 @@ void MicrosoftTools::find_windows_sdk_dir(Builder &builder) if(win_sdk_dir.empty()) win_sdk_dir = get_program_files_x86_dir()/"Windows Kits"/"10"; - builder.get_logger().log("files", format("Traversing %s", win_sdk_dir/"include")); + builder.get_logger().log("files", "Traversing %s", win_sdk_dir/"include"); vector sdk_versions = FS::list_filtered(win_sdk_dir/"include", "^10\\."); if(sdk_versions.empty()) { @@ -75,5 +84,5 @@ void MicrosoftTools::find_windows_sdk_dir(Builder &builder) sort(sdk_versions); win_sdk_version = sdk_versions.back(); - builder.get_logger().log("tools", format("Windows SDK version %s found in %s", win_sdk_version, win_sdk_dir)); + builder.get_logger().log("tools", "Windows SDK version %s found in %s", win_sdk_version, win_sdk_dir); }