cmake uninstall

¿Compatibilidad con CMake “hacer desinstalación”?



uninstall (3)

Estoy tratando de encontrar alguna solución libre de sudo para permitir que mis usuarios instalen y desinstalen mi aplicación. Utilizando

set(CMAKE_INSTALL_PREFIX "$ENV{HOME}/opt/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}/") SET(CMAKE_INSTALL_RPATH "$ENV{HOME}/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}/")

Puedo dirigir los archivos al directorio principal del usuario, y

make install

funciona bien. Con referencia a ¿Qué es lo contrario de ''make install'', es decir. ¿Cómo se desinstala una biblioteca en Linux? No encontré ninguna idea, que es sudo -free y no es compleja para una persona que no es administrador del sistema.

  1. ¿Es la make uninstall de alguna manera compatible con CMake?

  2. Mi desinstalación es bastante simple: todos los archivos van en un subdirectorio de la casa del usuario. En principio, se eliminó ese nuevo subdirectorio que podría solucionar el problema. ¿Ha realizado la make install , con los parámetros anteriores, algún efecto secundario, o puedo escribir en mi guía del usuario que el subdirectorio recién producido se puede eliminar como ''desinstalar''?


Eliminar archivos y carpetas (solo vacío) agregados por make install desde un proyecto cmake:

cat install_manifest.txt | sudo xargs rm cat install_manifest.txt | xargs -L1 dirname | sudo xargs rmdir -p

El segundo comando imprimirá un montón de errores porque elimina las carpetas de forma recursiva hasta que encuentra uno que no está vacío. Me gusta ver esos errores para saber qué carpetas quedan. Si desea ocultar estos errores, puede agregar --ignore-fail-on-non-empty a rmdir.


No no hay. Ver en el FAQ de CMake wiki :

De forma predeterminada, CMake no proporciona el objetivo de "realizar desinstalación", por lo que no puede hacer esto. No queremos que "haga la desinstalación" para eliminar archivos útiles del sistema.

Si desea un objetivo de "desinstalación" en su proyecto, nadie le impide proporcionar uno. Debe eliminar los archivos enumerados en el archivo install_manifest.txt. [seguido de un código de ejemplo]