def run(self):
        """
        run CMake
        """
        command = [self.cmake]

        if self.generator:
            command.extend([
                '-G', self.generator
            ])

        if self.path:
            command.append(self.path)

        if self.definitions is not None:
            for item in self.definitions.items():
                command.append('-D%s=%s' % item)

        if self.options is not None:
            command.extend(self.options)

        cmd = yield self.makeRemoteShellCommand(command=command)

        yield self.runCommand(cmd)

        return cmd.results()