Zephyr构建系统将应用程序的所有组件编译并链接到一个可以在模拟硬件或真实硬件上运行的单个应用程序。
虽然Zephyr中的默认构建工具是west
,但也可以直接使用cmake
来构建。
构建的过程分为:构建和编译。
使用west
构建的指令和配置
使用west
构建的指令
west build -b reel_board samples/hello_world
使用west构建时选择生成器
在使用cmake编译时我们可以选择ninja
或者make
来构建。
在构建时,通过命令行来指定生成器
west build -b reel_board samples/hello_world -- -G"Unix Makefiles"
通过修改
west
配置来改变生成器west config build.generator "Unix Makefiles"
通过
cmake
来完成构建# Use cmake to configure a Ninja-based buildsystem:
cmake -B build -GNinja -DBOARD=reel_board samples/hello_world
# Now run ninja on the generated build system:
ninja -C build
构建的基础步骤
首先进入到应用程序目录中
采用
west
指令或cmake
指令来完成构建。# 使用west完成构建
west build -b <board>
# 使用cmake完成构建
mkdir build && cd build
# Use cmake to configure a Ninja-based buildsystem:
cmake -GNinja -DBOARD=<board> ..
# Now run ninja on the generated build system:
ninja
可以指定自定义的Kconfig配置文件
# 使用west构建时指定自定义配置文件
west build -b <board> -- -DCONF_FILE=prj.alternate.conf
# 使用cmake构建时指定自定义配置文件
mkdir build && cd build
cmake -GNinja -DBOARD=<board> -DCONF_FILE=prj.alternate.conf ..
ninja
构建生成的目录
build.ninja
,可以调用该配置来完成应用程序的构建。zephyr
目录,这是编译系统的工作目录,以及大多数生成文件的创建和存储位置。zephyr/.config
文件,包含应用程序的配置选项。zephyr/*.a
或zephyr/*.o
文件,是编译时生成的中间文件。zephyr/zephyr.elf
文件,是编译之后最终生成的二进制文件。最终生成的二进制文件格式也可以被转换为.bin
或.hex
。重新构建应用程序
在应用程序的源文件、CMakeLists.txt、目录结构或配置设置发生任何重大更改后,通常最好进行重新构建。
有时,构建系统无法正确构建应用程序,因为它无法重新编译一个或多个必要的文件。可以通过强制构建系统重新构建应用程序。
进入应用程序的构建目录中,默认就是应用程序下的
build
目录。删除除了配置文件之外的所有生成文件。
# 通过west删除
west build -t clean
# 通过cmake删除
ninja clean
或者删除全部文件生成文件,包含配置文件。
# 通过west删除
west build -t pristine
# 通过cmake删除
ninja pristine
构建时选择板子的修订版本
Zephyr构建系统支持指定单个板的多个硬件修订,但变化较小。使用板子的修订支持配置文件对板子配置进行小的调整,而不会重复创建板子目录中描述的所有文件,以便每次修订。
要构建用于特定的修订,请使用<board>@<revision>
形式指定板子。
使用west构建是指定板子的修订版本。west build -b <board>@<revision>
使用cmake指定板子的修订版本。
mkdir build && cd build
cmake -GNinja -DBOARD=<board>@<revision> ..
ninja
当使用板子的修订时,在构建时
cmake
打印的信息如下: