ユーザーがアプリケーションをインストールしてアンインストールできるようにするためのSudo
- freeソリューションを見つけようとしています。を使用して
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
正常に動作します。 「make install」の反対、つまりLinuxでライブラリをアンインストールする方法は? を参照すると、Sudo
- freeでアイデアが見つからなかったシステム管理者以外の人にとっては複雑です。
とにかくmake uninstall
CMakeでサポートされていますか?
私のアンインストールは非常に簡単です。すべてのファイルはユーザーのホームのサブディレクトリに保存されます。原則として、新しいサブディレクトリが問題を解決できることを削除しました。 make install
、上記のパラメータ、任意の副作用、または新しく作成されたサブディレクトリを「アンインストール」として削除できることをユーザーガイドに記述できますか?
いいえ、ありません。 CMake wikiからのFAQ を参照してください:
デフォルトでは、CMakeは「make uninstall」ターゲットを提供しないため、これを行うことはできません。 「make uninstall」でシステムから有用なファイルを削除することは望ましくありません。
プロジェクトで「アンインストール」ターゲットが必要な場合、誰もそれを提供することを妨げません。 install_manifest.txtファイルにリストされているファイルを削除する必要があります。 [いくつかのサンプルコードが続きます]
uninstallターゲットを追加する場合は、公式CMake FAQat:
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
ファイルが作成されます。
make install
によって追加されたファイルとフォルダー(空のみ)をcmakeプロジェクトから削除します。
cat install_manifest.txt | Sudo xargs rm
cat install_manifest.txt | xargs -L1 dirname | Sudo xargs rmdir -p
2番目のコマンドは、空ではないフォルダーが見つかるまで再帰的にフォルダーを削除するため、大量のエラーを出力します。これらのエラーを見て、どのフォルダーが残っているかを知るのが好きです。これらのエラーを非表示にする場合は、--ignore-fail-on-non-empty
をrmdirに追加できます。