CMake支持“make uninstall”?

时间:2017-01-04 19:16:37

标签: cmake uninstall

我正在尝试找到一些sudo - 免费解决方案,以使我的用户能够安装和取消我的应用程序。使用

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}/")

我可以将文件定向到用户的主目录,

make install

工作正常。参考 What's the opposite of 'make install', ie. how do you uninstall a library in Linux? 我没有找到任何想法,这是sudo - 免费,对于非系统管理员来说并不复杂。

  1. CMake是否支持make uninstall

  2. 我的卸载非常简单:所有文件都放在用户家中的子目录中。原则上,删除该新子目录可以解决问题。有make install,上面有参数,有任何副作用,或者我可以在我的用户指南中写下新生成的子目录可以作为“卸载”删除吗?

4 个答案:

答案 0 :(得分:38)

如果您想添加卸载目标,可以查看官方 CMake常见问题

  

https://gitlab.kitware.com/cmake/community/wikis/FAQ#can-i-do-make-uninstall-with-cmake

如果您只想快速卸载所有文件,请运行:

xargs rm < install_manifest.txt
运行install_manifest.txt时会创建

make install文件。

答案 1 :(得分:18)

不,没有。请参阅FAQ from CMake wiki

  

默认情况下,CMake不提供“make uninstall”目标,所以你   不能这样做。我们不希望“make uninstall”删除有用的文件   来自系统。

     

如果您想在项目中使用“卸载”目标,   然后没有人阻止你提供一个。你需要删除   install_manifest.txt文件中列出的文件。 [后跟一些示例代码]

答案 2 :(得分:10)

从cmake项目中删除make install添加的文件和文件夹(仅空):

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

第二个命令将打印一堆错误,因为它会递归删除文件夹,直到找到一个非空文件夹。我喜欢看到这些错误,知道剩下哪些文件夹。如果您想隐藏这些错误,可以将--ignore-fail-on-non-empty添加到rmdir。

答案 3 :(得分:5)

来自源文件夹:

  1. 打开 install_manifest.txt(由 make install 创建)

  2. 删除列出的所有目录/文件

  3. 删除您遗漏的任何剩余文件:

    xargs rm < install_manifest.txt

  4. 删除所有隐藏的目录/文件:

    $rm -rf ~/.packagename

删除源文件夹。