as i've commented for the enum, i'd rather hide `KDTree` option if cmake did not find nanoflann...
i mean this is why we actually have configure script to detect whether nanoflann is available... it's rather weird to say that we know that you don't have nanoflann but still 'support' that mode by returning runtime error....