Zephyr构建系统将应用程序的所有组件编译并链接到一个可以在模拟硬件或真实硬件上运行的单个应用程序。
虽然Zephyr中的默认构建工具是west,但也可以直接使用cmake来构建。
构建的过程分为:构建和编译。

使用west构建的指令和配置

使用west构建的指令

  1. west build -b reel_board samples/hello_world

使用west构建时选择生成器

在使用cmake编译时我们可以选择ninja或者make来构建。

  • 在构建时,通过命令行来指定生成器

    1. west build -b reel_board samples/hello_world -- -G"Unix Makefiles"
  • 通过修改west配置来改变生成器

    1. west config build.generator "Unix Makefiles"

    通过cmake来完成构建

    1. # Use cmake to configure a Ninja-based buildsystem:
    2. cmake -B build -GNinja -DBOARD=reel_board samples/hello_world
    3. # Now run ninja on the generated build system:
    4. ninja -C build

    构建的基础步骤

  • 首先进入到应用程序目录中

  • 采用west指令或cmake指令来完成构建。

    1. # 使用west完成构建
    2. west build -b <board>
    1. # 使用cmake完成构建
    2. mkdir build && cd build
    3. # Use cmake to configure a Ninja-based buildsystem:
    4. cmake -GNinja -DBOARD=<board> ..
    5. # Now run ninja on the generated build system:
    6. ninja
  • 可以指定自定义的Kconfig配置文件

    1. # 使用west构建时指定自定义配置文件
    2. west build -b <board> -- -DCONF_FILE=prj.alternate.conf
    1. # 使用cmake构建时指定自定义配置文件
    2. mkdir build && cd build
    3. cmake -GNinja -DBOARD=<board> -DCONF_FILE=prj.alternate.conf ..
    4. ninja

    构建生成的目录

    10.zephyr构建应用程序 - 图1

  • build.ninja,可以调用该配置来完成应用程序的构建。

  • zephyr目录,这是编译系统的工作目录,以及大多数生成文件的创建和存储位置。
  • zephyr/.config文件,包含应用程序的配置选项。
  • zephyr/*.azephyr/*.o文件,是编译时生成的中间文件。
  • zephyr/zephyr.elf文件,是编译之后最终生成的二进制文件。最终生成的二进制文件格式也可以被转换为.bin.hex

    重新构建应用程序

    在应用程序的源文件、CMakeLists.txt、目录结构或配置设置发生任何重大更改后,通常最好进行重新构建。

    有时,构建系统无法正确构建应用程序,因为它无法重新编译一个或多个必要的文件。可以通过强制构建系统重新构建应用程序。

  • 进入应用程序的构建目录中,默认就是应用程序下的build目录。

  • 删除除了配置文件之外的所有生成文件。

    1. # 通过west删除
    2. west build -t clean
    1. # 通过cmake删除
    2. ninja clean
  • 或者删除全部文件生成文件,包含配置文件。

    1. # 通过west删除
    2. west build -t pristine
    1. # 通过cmake删除
    2. ninja pristine

    构建时选择板子的修订版本

    Zephyr构建系统支持指定单个板的多个硬件修订,但变化较小。使用板子的修订支持配置文件对板子配置进行小的调整,而不会重复创建板子目录中描述的所有文件,以便每次修订。
    要构建用于特定的修订,请使用<board>@<revision>形式指定板子。
    使用west构建是指定板子的修订版本。

    1. west build -b <board>@<revision>

    使用cmake指定板子的修订版本。

    1. mkdir build && cd build
    2. cmake -GNinja -DBOARD=<board>@<revision> ..
    3. ninja

    当使用板子的修订时,在构建时cmake打印的信息如下:
    10.zephyr构建应用程序 - 图2