autotools不删除某些文件夹和文件

时间:2014-07-02 14:21:22

标签: linux makefile autotools

我正在使用autotools来打包我的软件并进行编译。我遇到的问题是在安装过程中,我在/ etc / myapp中创建了一个文件夹,在该文件夹中我放置了几个我需要的文件。此外,当我的软件运行时,我正在生成文件并将它们存储在同一位置(/ etc / myapp)。当我执行“sudo make uninstall”时,从/ etc / myapp中删除最初使用“sudo make install”安装的所有文件。但是,软件生成并存储在同一位置的文件不会被删除,现在我已经遗留了文件。

在Makefile.am文件中,我指定在卸载过程中删除整个/ etc / myapp文件夹?

仅供参考,我正在使用Ubuntu 12。

谢谢 d

2 个答案:

答案 0 :(得分:1)

Makefile.am中,您可以创建一个名为uninstall-hook的目标,该目标将删除您生成的文件:

uninstall-hook:
    rm -f $(DESTDIR)$(datadir)/my_generated_file $(DESTDIR)$(datadir)/my_other_generated_file

甚至:

uninstall-hook:
    rm -rf $(DESTDIR)$(datadir)

答案 1 :(得分:0)

您的问题不仅仅涉及工具;它涉及政策。你在创建什么类型的文件?如果它们可以在重新启动时丢失,它们(可能)属于/ var / run / myapp。如果它们是数据文件,它们可能属于$(prefix)/ share / myapp。我说“可能”因为它取决于平台和用户。大多数debian用户都希望在我上面提到的位置使用这些文件,但他们可能有理由将它们放在别处。重要的是,它是用户的选择,而不是你的选择。作为软件包维护者,您无法选择/ etc / myapp。您需要配置程序包以使用户可以使用这些选项。这样做的典型方法是使用automake的_DATA primaries和'sysconfdir','sharedstatedir','localstatedir'和'pkgdatadir'变量系列。