Skip to content

Mizux/cmake-cpp

Repository files navigation

Github-CI:
Build Status Build Status Build Status

Build Status Build Status Build Status

Build Status Build Status Build Status Build Status Build Status Build Status

Introduction

| Requirement | Codemap | Dependencies | Build | CI | Appendices | License |

This is an example of how to create a Modern CMake C++ Project.

This project should run on GNU/Linux, MacOS and Windows.

Requirement

You'll need:

  • "CMake >= 3.16".

Codemap

The project layout is as follow:

Dependencies

To complexify a little, the CMake project is composed of three libraries (Foo, Bar and FooBar) with the following dependencies:

Foo:
Bar:
FooBar: PUBLIC Foo PRIVATE Bar
FooBarApp: PRIVATE FooBar

note: Since Foo is a public dependency of FooBar, then FooBarApp will see Foo inlude directories

Build

To build the C++ project, as usual:

cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release

Appendices

Few links on the subject...

Resources

Project layout:

  • The Pitchfork Layout Revision 1 (cxx-pflR1)

CMake:

Misc

Image has been generated using plantuml:

plantuml -Tsvg docs/{file}.dot

So you can find the dot source files in ci/docs.

License

Apache 2. See the LICENSE file for details.

Disclaimer

This is not an official Google product, it is just code that happens to be owned by Google.