By default, CMake sets the CMAKE_INSTALL_PREFIX to /usr/local on UNIX systems.
It is common to install shared libraries to /usr/local/bin and header files to /usr/local/include/<project-name>/. This can be done by adding the following commands to your CMakeLists.txt:
It is NOT recommended to install to /usr/bin/ and /usr/local/ as these are typically reserved for applications managed by the primary package manager for the UNIX distribution, e.g. apt-get on Ubuntu and other Debian systems.
install(DIRECTORY ... copies the entire contents of the directory (excluding the directory itself) into the destination directory.
It is recommended to bundle all the headers of your application under a single src/include/<project-name> directory in your source code. This means that CMake can easily copy this directory into /usr/local/include with a single install(DIRECTORY command. The <project-name> directory under your src/include/ directory is so that your header files don’t pollute the /usr/local/include/ directory, as this directory can get large, making it hard to uninstall your program, and increases the risk of naming conflicts!