Skip to content
/ cmake Public

A "Modern CMake" example project to collect best practices.

License

Notifications You must be signed in to change notification settings

sunsided/cmake

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

"Modern" CMake Example Project

CMake is anarchy. In order to do it better, here's an example project that contains the following structure:

  • A library foo that privately depends on Boost::date_time and provides some functionality.
  • A library bar that solely depends on foo.
  • An executable baz that calls a method in bar.

All projects are set up in a way that they can be installed and found using find_package(), as well as added using add_subdirectory(). The CMakeLists.txt files are heavily documented, but care should be taken to also have a look at the cmake/*-cmake.in files of the individual libraries.

Each installation is versioned, allowing for keeping multiple different versions at the same time. Likewise, installation paths are prefixed with the build configuration.

References

Blog posts and repositories that helped in assembling this:

About

A "Modern CMake" example project to collect best practices.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published