diff --git a/src/cargo/core/compiler/build_config.rs b/src/cargo/core/compiler/build_config.rs index dc5e6068037..70b2b355cc9 100644 --- a/src/cargo/core/compiler/build_config.rs +++ b/src/cargo/core/compiler/build_config.rs @@ -65,7 +65,17 @@ impl BuildConfig { failure::bail!("target was empty") } } - let cfg_target = config.get_string("build.target")?.map(|s| s.val); + let cfg_target = match config.get_string("build.target")? { + Some(ref target) if target.val.ends_with(".json") => { + let path = target.definition.root(config).join(&target.val); + let path_string = path + .into_os_string() + .into_string() + .map_err(|_| failure::format_err!("Target path is not valid unicode")); + Some(path_string?) + } + other => other.map(|t| t.val), + }; let target = requested_target.or(cfg_target); if jobs == Some(0) {