The current CMakeLists.txt needs to be cleaned up and made to reflect current CMake best practices.
Our methods of finding and specifying dependencies need some work, and we need to break the configuration down into separate per-directory CMakelists.txt instead a single monolithic configuration file.