Add `uninstall` target only if not already defined.

What does this implement/fix?

As suggested by https://gitlab.kitware.com/cmake/community/-/wikis/FAQ#can-i-do-make-uninstall-with-cmake it is common to check for the uninstall target to exist before adding it.

While this is not a problem for standalone projects or for projects using ExternalProject (https://cmake.org/cmake/help/latest/module/ExternalProject.html), while using FetchContent (https://cmake.org/cmake/help/latest/module/FetchContent.html) all targets are "imported" into a single namespace.

It is reasonable to let the user know if a dependency already defines a specific target, but the uninstall meta target has a common name and for this reason it is a good practice to check for its existence before defining it.

This change should not have any impact on users installing the project separately, but will allow the use of Eigen with FetchContent

Merge request reports

Loading