Who is this for?

This is an advanced topic for developers who want to learn how to develop a library in modern C++ on Arm, using matrix processing as an example.

What will you learn?

Upon completion of this Learning Path, you will be able to:

  • Develop a new C++ library.
  • Test a C++ library, ensuring it does not regress functionally.

Prerequisites

Before starting, you will need the following:

  • An Arm-based computer running Linux, macOS, or Windows.
  • An intermediate understanding of C++ programming.
  • A suitable Integrated Development Environment (IDE).
  • The CMake build tool.
  • A C++ compiler with C++17 support.
  • A build system GNU Make or Ninja .
  • A documentation generator Doxygen .

Summary

AI-assisted

This summary was drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.

Close
?
You’ll build and test a modern C++ matrix library on an Arm-based machine with CMake and GoogleTest. First, you’ll configure a C++17 toolchain and add unit tests. Then, you’ll implement matrix construction, assignment, addition, subtraction, and multiplication, keeping traversal separate from data processing. You’ll choose a build system and balance error checking with performance before validating the library with consistent builds and passing tests.

Frequently asked questions

AI-assisted

These FAQs were drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.

Close
?
Which C++ compiler should I use and which standard is required?
Use a compiler with C++17 support. Both Clang and GCC work for this Learning Path.
Should I use GNU Make or Ninja for the build?
Either GNU Make or Ninja works with CMake. Choose one and use it consistently across builds.
What result should I expect after the first build and test run?
Expect the project to build successfully, and the unit tests to run without failures. At this stage, you can construct, assign, and print Matrix objects.
Which matrix operations do I implement and how should I structure them?
Implement addition, subtraction, and multiplication. Keep traversal separate from data processing so you can compose functionality and test components independently.
How should I approach error handling while implementing the library?
Balance safety and performance for your use case. Trusted, curated data can use different checks from untrusted input, so choose the validation level accordingly.
Next