main and cmakelists