4.3.2. 编译和运行项目

4.3.2.1. 编译项目

cargo new 命令创建了一个 “hello_world”,我们通过 cargo build 命令来编译它:

$ cargo build
   Compiling hello_world v0.1.0 (file:///path/to/project/hello_world)

cargo build 命令将代码编译为可执行文件。目前,我们使用的是默认的调试模式进行编译,因此要运行此示例代码,执行 ./target/debug 目录下的二进制文件:

$ ./target/debug/hello_world
Hello, world!

4.3.2.2. 编译并运行项目

我们也可以直接使用 cargo run 命令来运行源代码。cargo run 命令会自行编译,然后运行它:

$ cargo run
     Fresh hello_world v0.1.0 (file:///path/to/project/hello_world)
   Running `target/hello_world`
Hello, world!

执行 cargo build 命令后,你会注意到,项目目录中创建了几个新文件和目录:

$ tree .
.
|-- Cargo.lock
|-- Cargo.toml
|-- src
|   `-- main.rs
`-- target
    `-- debug
        |-- build
        |-- deps
        |   |-- hello_world-6ad0b2df81336e7f
        |   |-- hello_world-6ad0b2df81336e7f.d
        |   `-- hello_world-6ad0b2df81336e7f.dSYM
        |       `-- Contents
        |           |-- Info.plist
        |           `-- Resources
        |               `-- DWARF
        |                   `-- hello_world-6ad0b2df81336e7f
        |-- examples
        |-- hello_world
        |-- hello_world.d
        |-- hello_world.dSYM -> deps/hello_world-6ad0b2df81336e7f.dSYM
        |-- incremental
        |   // ...
        `-- native

15 directories, 19 files

其中的 Cargo.lock 文件,包含项目依赖项的有关信息(即使还未有依赖,此文件也会在编译后产生),其内容可读性较差。另外,target 目录包含所有构建产品(二进制文件、依赖项编译文件等)。并且,如上文 cargo build 命令执行时所提及:Cargo 默认生成调试(debug)版本。