'Define the executables (and options for them) that will be run
to perform the various stages of compilation.  The exact set of
executables that may be specified here depends on the compiler
class (via the \'executables\' class attribute), but most will have:
compiler      the C/C++ compiler
linker_so     linker used to create shared objects and libraries
linker_exe    linker used to create binary executables
archiver      static library creator
On platforms with a command-line (Unix, DOS/Windows), each of these
is a string that will be split into executable name and (optional)
list of arguments.  (Splitting the string is done similarly to how
Unix shells operate: words are delimited by spaces, but quotes and
backslashes can override this.  See
\'distutils.util.split_quoted()\'.)'

def set_executables(self, **kwargs):

    for key in kwargs:
        if (key not in self.executables):
            raise ValueError(("unknown    executable    '%s'    for    class    %s" % (key, self.__class__.__name__)))
        self.set_executable(key, kwargs[key])
