add_externalproject argument explanation

Question is about arguments inside ExternalProject_Add function.
What is the difference between:

1. SOURCE_DIR
2. INSTALL_DIR
3. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH

There is good Dokumentation at https://cmake.org/cmake/help/latest/variable/CMAKE_INSTALL_PREFIX.html

Do you know why this argument does nothing to change download directory:
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH

Only SOURCE_DIR makes a change?

Yes, only SOURCE_DIR sets the directory.
The CMAKE_ARGS is passed to the cmake command after the sources have been downloaded.