]> git.proxmox.com Git - cargo.git/commit
Auto merge of #5203 - matklad:out-dir, r=alexcrichton
authorbors <bors@rust-lang.org>
Tue, 3 Apr 2018 18:52:50 +0000 (18:52 +0000)
committerbors <bors@rust-lang.org>
Tue, 3 Apr 2018 18:52:50 +0000 (18:52 +0000)
commitf0828058aed46283b02180cb7cb982d52c6c2770
treeaab4aaf857c74c57e5c4f4ed70b513809b3c3359
parent9bd7134fc5972d8582165ab8e3a6e7d685fc5cc4
parentc9191180e1fd714e7847ddba0c73d7d48ad05f3d
Auto merge of #5203 - matklad:out-dir, r=alexcrichton

cargo build --out-dir

This is intended to fix https://github.com/rust-lang/cargo/issues/4875. Very much work in progress, just to figure out how exactly `--out-dir` should work :)

The path of least resistance for implementing `out-dir` would be to just link everything from `target/debug` to the `out-dir`. However, the problem with this approach is that we link *too much* to the `target/debug`. For example, if you run `cargo build --bin foo`, you'll find not only the `foo` itself there, but also rlibs from the same workspace.

I think it's rather important not to copy extra stuff to out-dir, so it is implemented as a completely new parameter, which is threaded through various config structs and applies *only* to the top-level units (i.e, to the stuff user explicitly requested to compile on the command line).

I also plan to add platform specific tests here, to check that we get .pdb on windows and .dSYM on macs for various crate-types.

Because, in general, a single target may produce multiple files, `out-dir` has to be a directory, you can't directly specify the output *file*.

Note that artifacts are still generated to the `target` dir as well.

Also cc @nirbheek, I hope that this might be useful for Meson integration, because `--out-dir` should be more straightforward to use than `--message-format=json`.

The end result, for `cargo build --bin rustraytracer --out-dir out` on windows looks like this:

![image](https://user-images.githubusercontent.com/1711539/37605115-941c0b22-2ba3-11e8-9685-9756a10fdfac.png)

Note how we have fewer files in the `out` :)

r? @alexcrichton