[rust-dev] Cargo multiple targets

Vladimir Matveev dpx.infinity at gmail.com
Wed Jul 2 05:09:48 PDT 2014


Hi, Isak!

According to manifest documentation [1] you can specify crate type (dynamic or static lib or rlib) using crate_type option:

[[lib]]
…
crate_type = ["dylib", "staticlib"]

The above configuration should build you both .a and .so files.

    [1]: http://crates.io/manifest.html, search for "crate_type" w/o quotes

On 02 июля 2014 г., at 15:58, Isak Andersson <contact at bitpuffin.com> wrote:

> Hi!
> 
> Thanks for the reply!
> 
> Apparently multiple targets does in fact work. Just that you can't rely on the
> default path anymore, so I had to add the path = ... to both the [[lib]] and [[bin]].
> Not sure if this is a bug or not.
> 
> However the library compiles as an rlib and I'm not sure how to change it to build
> a C library instead (a .a or .so on *nix or .lib I think on windows).
> 
> Actually I'm not even sure how to make rustc build a C library so I guess that's what
> I will start looking at.
> 
> 
> On Wed, Jul 2, 2014 at 1:37 PM, Sebastian Gesemann <s.gesemann at gmail.com> wrote:
> On Wed, Jul 2, 2014 at 12:49 PM, Isak Andersson wrote:
> > Hello Rust folks!
> >
> > I am using Cargo and I am trying to specify mulitple targets in my
> > Cargo.toml file.
> > First of all is this even possible?
> > ...
> > [package]
> > name = "hmproof"
> > version = "0.1.0"
> > authors = [ "isak at houstonmedia.se" ]
> > [[bin]]
> > name = "hmwhoami"
> > [[lib]]
> > name = "proof"
> > (I also tried adding a path)
> > path = "src/proof.rs"
> > [dependencies.rust-http]
> > git = "https://github.com/chris-morgan/rust-http.git"
> >
> > I also tried putting the [[lib]] part after the dependencies part. The error
> > I get is this:
> > error: couldn't read src/bin/hmwhoami.rs: couldn't open file (no such file
> > or directory [...]
> > Whiich doesn't make any sense at all to me. Why does it suddenly start
> > looking in src/bin?
> 
> According to http://crates.io/manifest.html the default path for a
> binary is src (if there is no other lib) and src/bin (if there is also
> a lib target). You should be able to override this with path =
> src/hmwhoami.
> 
> > Do I have to put my bin code in src/bin and my lib code in src lib or what?
> 
> Currently, only a single lib per package is supported and it seems,
> judging by the document about the manifest format, that Cargo always
> looks for src/lib.rs for a library unless you override this using a
> "path=something".
> 
> As for how to tell Cargo to invoke rustc with the appropriate -L
> option: I don't know.
> 
> HTH,
> sg
> _______________________________________________
> Rust-dev mailing list
> Rust-dev at mozilla.org
> https://mail.mozilla.org/listinfo/rust-dev
> 
> _______________________________________________
> Rust-dev mailing list
> Rust-dev at mozilla.org
> https://mail.mozilla.org/listinfo/rust-dev



More information about the Rust-dev mailing list