Skip to content
/ pico-boilerplate Public template

A boilerplate C++, CMake project for the Raspberry Pi Pico.

License

Notifications You must be signed in to change notification settings

pimoroni/pico-boilerplate

Repository files navigation

Pico C++ Boilerplate Project

This project is intended as a starting point for working with the Pico SDK and Pimoroni Libraries in C++.

Before you start

It's easier if you make a pico directory or similar in which you keep the SDK, Pimoroni Libraries and your projects alongside each other. This makes it easier to include libraries.

Preparing your build environment

Install build requirements:

sudo apt update
sudo apt install cmake gcc-arm-none-eabi build-essential

And the Pico SDK:

git clone https://github.com/raspberrypi/pico-sdk
cd pico-sdk
git submodule update --init
export PICO_SDK_PATH=`pwd`
cd ../

The PICO_SDK_PATH set above will only last the duration of your session.

You should should ensure your PICO_SDK_PATH environment variable is set by ~/.profile:

export PICO_SDK_PATH="/path/to/pico-sdk"

Grab the Pimoroni libraries

git clone https://github.com/pimoroni/pimoroni-pico

Clone this boilerplate

git clone https://github.com/pimoroni/pico-boilerplate
cd pico-boilerplate

If you have not or don't want to set PICO_SDK_PATH you can edit .vscode/settings.json to pass the path directly to CMake.

Prepare Visual Studio Code

Open VS Code and hit Ctrl+Shift+P.

Type Install and select Extensions: Install Extensions.

Make sure you install:

  1. C/C++
  2. CMake
  3. CMake Tools
  4. Cortex-Debug (optional: for debugging via a Picoprobe or Pi GPIO)
  5. Markdown All in One (recommended: for preparing your own README.md)

Prepare your project

Edit CMakeLists.txt and follow the instructions, you should make sure you:

  1. edit your project name
  2. include the libraries you need
  3. link the libraries to your project

Pick your LICENSE

We've included a copy of BSD 3-Clause License to match that used in Raspberry Pi's Pico SDK and Pico Examples. You should review this and check it's appropriate for your project before publishing your code.