cmake improvment