More work on C++ port
Add initial cmake setup