mirror of
https://github.com/zephyrproject-rtos/zephyr
synced 2025-09-02 03:35:19 +00:00
There are a few different places where alternatives for setting environment variables are described. None of them is 100% complete, so the results are likely to be confusing. Make a single page on setting environment variables, how the zephyrrc files work, how the zephyr-env scripts work, and some of the important environment variables, with appropriate references elsewhere. (This is inspired by the Arch wiki's excellent page on installing programs.) Link to it from the getting started and application development pages instead of repeating the information. This has the benefit of shortening the getting started guide a bit more. Add some concrete advice on checking the toolchain environment variables in particular. This is a stumbling block for beginners. Signed-off-by: Marti Bolivar <marti.bolivar@nordicsemi.no>
158 lines
4.9 KiB
ReStructuredText
158 lines
4.9 KiB
ReStructuredText
.. _env_vars:
|
|
|
|
Environment Variables
|
|
=====================
|
|
|
|
Various pages in this documentation refer to setting Zephyr-specific
|
|
environment variables. This page describes how.
|
|
|
|
Setting Variables
|
|
*****************
|
|
|
|
Option 1: Just Once
|
|
-------------------
|
|
|
|
To set the environment variable :envvar:`MY_VARIABLE` to ``foo`` for the
|
|
lifetime of your current terminal window:
|
|
|
|
.. code-block:: console
|
|
|
|
# Linux and macOS
|
|
export MY_VARIABLE=foo
|
|
|
|
# Windows
|
|
set MY_VARIABLE=foo
|
|
|
|
.. warning::
|
|
|
|
This is best for experimentation. If you close your terminal window, use
|
|
another terminal window or tab, restart your computer, etc., this setting
|
|
will be lost forever.
|
|
|
|
Using options 2 or 3 is recommended if you want to keep using the setting.
|
|
|
|
Option 2: In all Terminals
|
|
--------------------------
|
|
|
|
**macOS and Linux**:
|
|
|
|
Add the ``export MY_VARIABLE=foo`` line to your shell's startup script in your
|
|
home directory. For Bash, this is usually :file:`~/.bashrc` on Linux or
|
|
:file:`~/.bash_profile` on macOS. Changes in these startup scripts don't
|
|
affect shell instances already started; try opening a new terminal window to get
|
|
the new settings.
|
|
|
|
**Windows**:
|
|
|
|
You can use the ``setx`` program in ``cmd.exe`` or the third-party
|
|
RapidEE program.
|
|
|
|
To use ``setx``, type this command, then close the terminal window. Any new
|
|
``cmd.exe`` windows will have :envvar:`MY_VARIABLE` set to ``foo``.
|
|
|
|
.. code-block:: console
|
|
|
|
setx MY_VARIABLE foo
|
|
|
|
To install RapidEE, a freeware graphical environment variable
|
|
editor, `using Chocolatey`_ in an Administrator command prompt:
|
|
|
|
.. code-block:: console
|
|
|
|
choco install rapidee
|
|
|
|
You can then run ``rapidee`` from your terminal to launch the program and set
|
|
environment variables. Make sure to use the "User" environment variables area
|
|
-- otherwise, you have to run RapidEE as administrator. Also make sure to save
|
|
your changes by clicking the Save button at top left before exiting.Settings
|
|
you make in RapidEE will be available whenever you open a new terminal window.
|
|
|
|
.. _env_vars_zephyrrc:
|
|
|
|
Option 3: Using ``zephyrrc`` files
|
|
----------------------------------
|
|
|
|
Choose this option if you don't want to make the variable's setting available
|
|
to all of your terminals, but still want to save the value for loading into
|
|
your environment when you are using Zephyr.
|
|
|
|
**macOS and Linux**:
|
|
|
|
Create a file named :file:`~/.zephyrrc` if it doesn't exist, then add this line
|
|
to it:
|
|
|
|
.. code-block:: console
|
|
|
|
export MY_VARIABLE=foo
|
|
|
|
To get this value back into your current terminal environment, **you must run**
|
|
``source zephyr-env.sh`` from the main ``zephyr`` repository. Among other
|
|
things, this script sources :file:`~/.zephyrrc`.
|
|
|
|
The value will be lost if you close the window, etc.; run ``source
|
|
zephyr-env.sh`` again to get it back.
|
|
|
|
**Windows**:
|
|
|
|
Add the line ``set MY_VARIABLE=foo`` to the file
|
|
:file:`%userprofile%\\zephyrrc.cmd` using a text editor such as Notepad to save
|
|
the value.
|
|
|
|
To get this value back into your current terminal environment, **you must run**
|
|
``zephyr-env.cmd`` in a ``cmd.exe`` window after changing directory to the main
|
|
``zephyr`` repository. Among other things, this script runs
|
|
:file:`%userprofile%\\zephyrrc.cmd`.
|
|
|
|
The value will be lost if you close the window, etc.; run ``zephyr-env.cmd``
|
|
again to get it back.
|
|
|
|
.. _zephyr-env:
|
|
|
|
Zephyr Environment Scripts
|
|
**************************
|
|
|
|
You can use the zephyr repository scripts ``zephyr-env.sh`` (for macOS and
|
|
Linux) and ``zephyr-env.cmd`` (for Windows) to load Zephyr-specific settings
|
|
into your current terminal's environment. To do so, run this command from the
|
|
zephyr repository::
|
|
|
|
# macOS and Linux
|
|
source zephyr-env.sh
|
|
|
|
# Windows
|
|
zephyr-env.cmd
|
|
|
|
These scripts:
|
|
|
|
- set :envvar:`ZEPHYR_BASE` (see below) to the location of the zephyr
|
|
repository
|
|
- adds some Zephyr-specific locations (such as zephyr's :file:`scripts`
|
|
directory) to your :envvar:`PATH` environment variable
|
|
- loads any settings from the ``zephyrrc`` files described above in
|
|
:file:`env_vars_zephyrrc`.
|
|
|
|
You can thus use them any time you need any of these settings.
|
|
|
|
.. _env_vars_important:
|
|
|
|
Important Environment Variables
|
|
*******************************
|
|
|
|
Here are some important environment variables and what they contain. This is
|
|
not a comprehensive index to the environment variables which affect Zephyr's
|
|
behavior.
|
|
|
|
- :envvar:`BOARD`: allows set the board when building an application; see
|
|
:ref:`important-build-vars`.
|
|
- :envvar:`CONF_FILE`: allows adding Kconfig fragments to an application build;
|
|
see :ref:`important-build-vars`.
|
|
- :envvar:`DTC_OVERLAY_FILE`: allows adding device tree overlays to an
|
|
application build; see :ref:`important-build-vars`.
|
|
- :envvar:`ZEPHYR_BASE`: the absolute path to the main ``zephyr`` repository.
|
|
This is set whenever you run the ``zephyr-env.sh`` or ``zephyr-env.cmd``
|
|
scripts mentioned above.
|
|
- :envvar:`ZEPHYR_TOOLCHAIN_VARIANT`: the current :ref:`toolchain
|
|
<gs_toolchain>` used to build Zephyr applications.
|
|
|
|
.. _using Chocolatey: https://chocolatey.org/packages/RapidEE
|