我正在尝试找到一些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
- 免费,对于非系统管理员来说并不复杂。
CMake是否支持make uninstall
?
我的卸载非常简单:所有文件都放在用户家中的子目录中。原则上,删除该新子目录可以解决问题。有make install
,上面有参数,有任何副作用,或者我可以在我的用户指南中写下新生成的子目录可以作为“卸载”删除吗?
答案 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)
来自源文件夹:
打开 install_manifest.txt(由 make install
创建)
删除列出的所有目录/文件
删除您遗漏的任何剩余文件:
xargs rm < install_manifest.txt
删除所有隐藏的目录/文件:
$rm -rf ~/.packagename
删除源文件夹。