class_docstr: CMakeDefinition captures the cmake invocation arguments.
  
  It allows creating build directories with the same definition, e.g.
  ```
  build_1 = cmake_def.build("/tmp/build-1")
  build_2 = cmake_def.build("/tmp/build-2")
  
  ...
  
  build1.all()
  build2.all()
code: def __repr__(self):
      return "CMakeDefinition[source={}]".format(self.source)
  
imports: import os
  import re
  from shutil import rmtree, which
  from .command import Command, default_bin
label_desc: Use image node_id 4 for calling the CMakeDefinition obj's underlying member method code with example usage: obj.__repr__() and returns: str