在Makefile.am成功制作后打印一些东西

时间:2011-02-14 15:41:30

标签: automake

我是autotools的新手,并且设法创建了一个令人满意的configure.ac。 现在我想在某个地方(configure.ac,Makefile.am或者其他地方)指定在成功“make”之后,打印一个简短的注释。像“确保你在LD_LIBRARY_PATH中也包含了正确的路径”之类的东西。

但是,当我在Makefile.in中指定它时,执行“automake”会覆盖此文件(如预期的那样)。所以我还没有找到如何扩展,例如Makefile.am包含一个“echo确保你在一个目标的编译终止时也包含了LD_LIBRARY_PATH中的正确路径”。 ATM我只有一个目标(bin_PROGRAMS = myprog)。除此之外,编译等工作正常。但作为可能“没有”经验的用户的信息,我真的想打印出一些最终建议。

有没有办法实现这个目标?

谢谢你,并致以最诚挚的问候。

P.S。我知道cmake并且尚未使用它,目前,我想使用autotools和automake。

2 个答案:

答案 0 :(得分:7)

----编辑为install-exec-hook很有用,但这里是100%的答案----

通过替换Makefile.am

中的“install:”目标来扩展Makefile

将以下内容添加到“Makefile.am”

install: install-am
        echo "Don't forget to set your LD_LIBRARY_PATH"

要使其正常工作,必须首先在生成的Makefile中找到安装目标,然后将其复制到Makefile.am。这可以确保您不会破坏automake目标相互依赖的方式。

然后在目标下添加命令,就像在任何Makefile中一样。请注意,这是在Makefile.am中完成的,因此当automake构建它的Makefile.in和Makefile时,它将使用它通常提供的默认值来获取目标。

这将使您的“警告”更接近非并行构建的结尾。危险在于您必须确保覆盖“安装”目标仍然符合automake的要求。

此外,如果他们运行“make install-exec”,您的警告将不会报告。如果您决定在“make install-exec”中进行报告,那么您应该

  1. 删除报告自定义 为“make install”(避免 双报告)。
  2. 添加报告 自定义“制作 install-exec“(报告库 添加警告)。
  3. 自定义install-am 目标是在之前安装数据 安装可执行文件。
  4. 删除安装自定义的示例

    // note the lack of install: override int Makefile.am
    install-exec: install-exec-am
            echo "Be sure to update your LD_LIBRARY_PATH"
    
    install-am: all-am
        @${MAKE} $(AM_MAKEFLAGS) install-data install-exec
    

    ----原帖如下----

    您的报告确实应该在安装时进行。 autotools平台中有两个安装目标,即install-data和install-exec。共享库正确地属于“exec”类别。

    将install-exec-hook添加到makefile.am

    基本上看起来有点像:

    install-exec-hook:
            echo "Be sure to set your LD_LIBRARY_PATH!"
    

    install-data,install-exec,uninstall,dist和distcheck都支持“-hook”扩展。

    只要保证它在构建结束时运行,就会有点困难。 Make / Automake构建为允许并行构建,并且干扰它将在构建结束时运行的保证。

答案 1 :(得分:4)

只需在顶级Makefile.am中添加一个本地钩子:

all-local:
        @echo 'Make sure...'