2013-10-22 8 views
5

make uninstallを使用してアプリケーションをアンインストールすると、それはmake installが作成したいくつかの空のディレクトリを残します。など空のディレクトリとファイルを削除するにはどうしたらいいですか?

/usr/share/foo/や、/usr/share/foo/applicationsなどそのサブディレクトリ、と私はグーグルで見つけたアプリケーションはそれが作成さディレクトリ(例を所有している場合、それはわからないので、のはuninstallターゲットを生成しているAutomakeは自動的に空のディレクトリを削除しません。それはmake installの間に)、または(例えば、ディレクトリはmake installの間に存在しました)を借りています。

現在のところ、どのメイクファイルにも確定的なuninstallターゲットがありません。削除する必要があるファイルを暗黙に示しているようです。問題のフォルダを削除する方法を教えてもよろしいですか?

答えて

4

これは解決策です。このようにuninstall-hookターゲットを登録してから、ディレクトリを削除するために必要なタスクを実行するだけでした。この例では、${pkgdatadir}/usr/share/fooに拡張されます。 if-thenは必要ありません。さもなければmake distcheckターゲットが失敗します。

uninstall-hook: 
    if test -d ${pkgdatadir}/applications; then rmdir ${pkgdatadir}/applications; fi 
    if test -d ${pkgdatadir}; then rmdir ${pkgdatadir}; fi 

uninstall-hookルールはアンインストールターゲットの実行後に呼び出されます。

+0

アンインストール・フックを登録していることが明らかではありません。このセグメントをMakefileに追加しましたか?もう少し詳しく説明してください... – einpoklum

+0

私のMakefile.amファイルに追加された位置は問題ではありません。ちょうど最後のどこかに追加してください。 – lanoxx

2

上記は過度に冗長です。

アンインストールフックターゲットを登録し、ディレクトリを削除するために必要なタスクを実行します。この例では、$ {pkgdatadir}は/ usr/share/fooに展開されます。 rmdirの前にあるマイナス記号は、makeに戻りコードを無視するように指示します(ディレクトリが空でない場合、makeは失敗しません)。マイナス記号はmakeコマンドの前に使用できます。

uninstall-hook: 
    -rmdir ${pkgdatadir}/applications 
    -rmdir ${pkgdatadir} 

uninstall-hookルールは、アンインストールターゲットの実行後に呼び出されます。ここで

は、マイナス記号の詳細です:What do @, - and + do as prefixes to recipe lines in Make?

+0

私の無知を許してください...これは 'configure.ac'か' Makefile.am'にありますか? – jww

+0

'Makefile.am'に入ります! – Linas

関連する問題