Zephyr CMake package / find_package(Zephyr)

Rasmussen, Torsten
 

Hi All,

 

A new way of including boilerplate code has been introduced with this PR https://github.com/zephyrproject-rtos/zephyr/pull/23054

 

This means a simple Zephyr application now looks as:

# Find Zephyr. This also loads Zephyr's build system.

cmake_minimum_required(VERSION 3.13.1)

find_package(Zephyr HINTS $ENV{ZEPHYR_BASE})

project(my_zephyr_app)

 

This means that developers no longer need to set ZEPHYR_BASE in their environment, but can let CMake find the Zephyr base using find_package().

 

For this to work, it is necessary to execute a new west command: `west zephyr-export`

This command only needs to be executed once, for example after a `west init`

 

All samples in Zephyr repository has been updated to use: find_package(Zephyr HINTS $ENV{ZEPHYR_BASE})

 

To all downstream user having own Zephyr-based applications, you may switch to the new find_package() method.

 

Note: this new feature is fully compatible with the old `include($ENV{ZEPHYR_BASE}/cmake/app/boilerplate.cmake)` design,

but if you keep using the old design, then it is still required to `source zephyr-env.sh` or execute `zephyr-env.cmd`.

 

Using the new `find_package()` remove the need to `source zephyr-env.sh`.

 

It is still possible to set the environment variable ZEPHYR_BASE, and doing so will overwrite the CMake package search functionality in Zephyr.

 

For more information on the new desgin, re-read the getting started guide (as the latest docs has not yet been build, this is a ):

https://github.com/zephyrproject-rtos/zephyr/blob/master/doc/getting_started/index.rst

https://github.com/zephyrproject-rtos/zephyr/blob/master/doc/guides/zephyr_cmake_package.rst

 

(Still waiting for the docs to be rebuilt)

 

 

Best regards

 

Torsten

 

 

Join devel@lists.zephyrproject.org to automatically receive all group messages.