Added cmake file and gcc and clang support