* Use target_include_directories to specify include paths
* Specify project root (parent of rtgui and rtengine) as include path
* Replace relative includes with normal includes
* Make some more files cppcheck clean
* revert change of dcrop.cc from last commit
* Replace calculation: y = pow(x, 1/ (2.f * 2.f)) by y = sqrt(sqrt(x))
* Revert "Replace calculation: y = pow(x, 1/ (2.f * 2.f)) by y = sqrt(sqrt(x))"
This reverts commit d639c67249f1723fa9f9e55e0442afcb862eba91.
While STL containers are not guaranteed to build with incomplete types,
`rtengine::Cache` used to build with `std::map` as well as
`std::unordered_map` when I first implemented it. With GCC 6.3 I
recently realized, that this was no longer the case for hashable keys
(i.e. `std::unordered_map` as `Store`).
The recommended workaround is to use a `std::unique_ptr`.
This commit adds a true LRU cache to `rtengine` which is used in the new
`CLUTStore` class. The code in `clutstore.*` was cleaned up with C++11
features and small optimizations taken from my `clutbench` project.
The `CLUTStore` class was converted to a true singleton.