This is an example of how to create a Modern CMake C++ Project.
This project should run on GNU/Linux, MacOS and Windows.
You'll need:
The project layout is as follow:
CMakeLists.txt Top-level for CMake based build.
cmake Subsidiary CMake files.
ci Root directory for continuous integration.
Foo Root directory for Foo
library.
Foo
.Bar Root directory for Bar
library.
Bar
.FooBar Root directory for FooBar
library.
FooBar
.FooBarApp Root directory for FooBarApp
executable.
FooBarApp
.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
To build the C++ project, as usual:
cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release
Few links on the subject...
Project layout:
CMake:
Image has been generated using plantuml:
plantuml -Tsvg docs/{file}.dot
So you can find the dot source files in ci/docs.
Apache 2. See the LICENSE file for details.
This is not an official Google product, it is just code that happens to be owned by Google.