build system – Why makefiles should have a goal of "installation"?

Coming from the world of C and C ++, most compilation systems have a install target, especially Makefiles (where it is recommended by GNU for example) or CMake. This destination copies the runtime files (executables, libraries, …) in the operating system (for example, in C: Program Files in Windows).

This feels really hacky, since for me It is not the responsibility of the compilation system to install programs. (which is actually the responsibility of the operating system / package manager). It also means that the compilation system or the compilation script must know the organization of the installed programs, With environment variables, registry variables, symbolic links, permissions …

In the best case scenario, construction systems should have a launching goal that will generate an installable program (for example, .debutante or .M: Yes), and then kindly ask the operating system to install that program. It would also allow the user to uninstall without having to write do uninstall.

So, my question: Why building the system usually recommends having a install objective?