Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


CSS Preprocessor

The CSS language is actually pretty flat and rather cumbersome to maintain. Many preprocessors have been created, but none in modern C++ supporting CSS 3 and the preliminary CSS 4 languages. CSS Preprocessor offers that functionality as a command line tool and a C++ library.

The main features of CSS Preprocessor are:

  • Nested rules
  • Nested fields
  • Variables
  • User defined functions
  • @mixin to create advanced / complex variables and functions
  • Conditional compilation
  • Strong validation of your CSS code (rules, field names, field data)
  • Minify or beautify CSS code


The CMakeLists.txt file depends on the snapCMakeModules.

The csspp command line tool makes use of the advgetopt C++ library to handle the command line argument.

The library requires at least C++14 (it may still work on C++11).

To generate the documentation, you will need to have Doxygen. That should not be required (if you have problems with that, let me know.) If you get Doxygen, having the dot tool is a good idea to get all the graphs generated.

Compile the library and csspp command line tool

The in the root directory tells you how to generate the distribution directory (or dev/ in the standalone csspp project).

We will be looking at making this simpler with time... for now, the environment is a bit convoluted.


The documentation is available online. A copy can be downloaded from


Submit bug reports and patches on github.

This file is part of the snapcpp project.